Vincular documentos a mi base de datos
Supongo que habrá otras formas de hacerlo, pero yo te expongo la mia
Create una tabla con tres campos DNI,TITULODOC(100) y DIRECCIONDOC(150)
La longitud de los campos la estimada para que quepan los titulos
Un botón en tu formulario
Private Sub InsertarDocumento_Click()
CALLFUNC = PathDocu()
ShellExecute Me.hwnd, "open", DOCUMENTOS, "", "", SW_SHOW
End Sub
'declara DNI como Public
Private Sub Form_Current()
DNI = Me.NUMDNI ' Se utiliza para dar de alta en TBL Documentos
End Sub
' create un modulo con el siguiente codigo
Function PathDocu() As Boolean
Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer
ModuloServidorFile = OpenFileAccesos()
End Function
Private Function OpenFileAccesos() As String
Dim EXISTE As Byte
Dim areatra As String
Dim of As OPENFILENAME
Dim i As Integer
of.hwndOwner = Application.hWndAccessApp
of.hInstance = 0
of.lpstrCustomFilter = 0
of.nMaxCustrFilter = 0
of.lpfnHook = 0
of.lpTemplateName = 0
of.lCustrData = 0
' of.lpstrFilter = "NOMBRE_DE_LA_BD" & vbNullChar & "*.mde" & vbNullChar & vbNullChar
of.lpstrFilter = "DOCUMENTOS" & vbNullChar & "*.*" & vbNullChar & vbNullChar
of.nFilterIndex = 1
' of.lpstrFile = Left$("NOMBRE_DE_LA_BD.mde" & String$(512, 0), 512)
of.lpstrFile = Left$("*.PDF" & String$(512, 0), 512)
of.nMaxFile = 511
of.lpstrFileTitle = String$(512, 0)
of.nMaxFileTitle = 511
of.lpstrTitle = "Seleccionar documentos"
of.lpstrInitialDir = "C:\DATOS\" ' AQUI PONES LO QUE QUIERAS
of.lpstrDefExt = ""
of.flags = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY
of.lStructSize = Len(of)
If GetOpenFileName(of) Then
OpenFileAccesos = Trim(Left$(of.lpstrFile, InStr(of.lpstrFile, vbNullChar) - 1))
Else
OpenFileAccesos = ""
End If
areatra = of.lpstrFileTitle
RUTA = OpenFileAccesos 'Almacena la ruta + el documento seleccionado
Dim GesDocDB As Database
Dim RS_DOC As Recordset
Set GesDocDB = DBEngine.Workspaces(0).Databases(0)
Set RS_DOC = GesDocDB.OpenRecordset("DOCUMENTOS")
RS_DOC.MoveFirst
EXISTE = False
Do While Not RS_DOC.EOF
If RUTA = RS_DOC("DIRECCIONDOC") & RS_DOC("TITULODOC") Then
EXISTE = True
Exit Do
End If
RS_DOC.MoveNext
Loop
If Not EXISTE Then ' si no está cargado el documento lo damos de alta en BD documentos
RS_DOC.AddNew
RS_DOC("DNI") = DNI
RS_DOC("TITULODOC") = Mid(areatra, 1, 100)
For i = 512 To 1 Step -1
If Mid(RUTA, i, 1) = "\" Then
RS_DOC("DIRECCIONDOC") = Mid(RUTA, 1, i)
Exit For
End If
Next
RS_DOC.Update
End If
RS_DOC.Close
End Function
-----------------------------------------------------------------------------------------------------------------------------
Tengo un formulario continuo basado en la tabla DOCUMENTO con los tres campos DNI no visible
lo abro mediante este botón y solo me abrira los documentos del registro que tengo en pantalla
Private Sub ListaDoc_Click()
On Error GoTo Err_ListaDoc_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Documentos"
stLinkCriteria = "[DNI]=" & Me![NUMDNI]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_ListaDoc_Click:
Exit Sub
Err_ListaDoc_Click:
MsgBox Err.Description
Resume Exit_ListaDoc_Click
End Sub
Cuando se hace click en TITULODOC o DIRECCIONDOC ejecuto esto
ShellExecute Me.hwnd, "open", Me.DIRECCIONDOC & Me.TITULODOC, "", "", SW_SHOW
PD:
Es algo complicado pero con paciencia se logra y además funciona.Si tienes dudas aqui me tienes.
Saludos desde Cádiz