Access - Vincular documentos a mi base de datos

   
Vista:

Vincular documentos a mi base de datos

Publicado por Antonio (114 intervenciones) el 15/07/2011 14:31:12
Hola a todos,

Estoy creando una base de datos para registrar todos los contratos del personal de mi empresa.
Me gustaría crear un campo donde vincular mi base de datos para ver los contratos que previamente escaneado haciendo un click.
Mi duda es si enlazar tantos documentos puede relentizar la base de datos o saber cual es la mejor forma para hacerlo y como hacerlo

Un abrazo a todos y muchas gracias por leerme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Vincular documentos a mi base de datos

Publicado por 2PL (53 intervenciones) el 15/07/2011 16:52:55
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vincular documentos a mi base de datos

Publicado por QUIQUE (293 intervenciones) el 16/07/2011 19:00:20
Sin perjuicio de lo arriba, tan bien explicado, por 2PL mi método consiste en usar lo que access nos dá sin escribir mucho código.

Para esto, en la tabla donde está el personal del cual querés ver su contrato, le agregas un campo hypervinculo que en este caso le llamaremos "Ver".
En la opción "dblclick" de este campo le pegas el siguiente código:

Private Sub Ver_DblClick(Cancel As Integer)
On Error GoTo Err_VER_DblClick
DoCmd.RunCommand acCmdInsertHyperlink
DoCmd.Save , ""
Exit_VER_DblClick:
Exit Sub

Err_VER_DblClick:
MsgBox "Hypervinculo Cancelado"
Resume Exit_VER_DblClick
End Sub

Con esto logras que se abra el navegador de carpetas y coloques el vínculo en la carpeta donde tenes escaneados los contratos.
La próxima ves que veas ese campo con el link colocado, al hacer click se abrirá el contrato relacionado con el.

Saludos

QUIQUE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Vincular documentos a mi base de datos

Publicado por 2pl (53 intervenciones) el 17/07/2011 08:19:54
Quique, pienso igual que tu y tu solución me parece bien siempre que el empleado solo tenga un documento, pero lo que yo he expuesto es ver todos los documentos que pudiera tener un mismo empleado y ademas poder agregar tantos documentos como fuera generando una persona y sin tener que tocar el programa.
Un cordial saludo y siempre es bueno contractar diferentes opiniones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar