** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Anexar registros con "documentos adjuntos" a tabla
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAnexar registros con "documentos adjuntos" a tabla

 Responder Responder
Autor
Mensaje
Amex Ver desplegable
Nuevo
Nuevo


Unido: 06/Noviembre/2019
Localización: León
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Tema: Anexar registros con "documentos adjuntos" a tabla
    Enviado: 08/Noviembre/2019 a las 10:31
Buenos días. Necesito ayuda sobre como anexar registros que cuenten con campo de documentos adjuntos desde una consulta a una tabla. Me explico:

Cuento con una tabla y una consulta que tienen los mismos campos. Mi deseo es anexar los registros de la consulta a la tabla. Para ello en vba hago lo siguiente: 

Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset

Set rst1 = CurrentDb.OpenRecordset("CNuevasIncidencias")
Set rst2 = CurrentDb.OpenRecordset("TIncidencias")
    
Do While Not rst1.EOF
        
rst2.AddNew
...
rst2!Documentosadjuntos = rst1!Documentosadjuntos
rst2!TIncidencias_Documentosadjuntos_FileData = rst1!TIncidencias_Documentosadjuntos_FileData
rst2!Expr1 = rst1!Expr1
rst2!TIncidencias_Documentosadjuntos_FileName = rst1!TIncidencias_Documentosadjuntos_FileName
rst2!Expr2 = rst1!Expr2
rst2!TIncidencias_Documentosadjuntos_FileType = rst1!TIncidencias_Documentosadjuntos_FileType
rst2!Expr3 = rst1!Expr3
...
rst2.update
rst1.movenext
DoEvents
Loop
rst1.Close
rst2.Close

Set rst1 = Nothing
Set rst2 = Nothing


Se produce el siguiente error: "Se ha producido el error '64224' en tiempo de ejecucción: Error en el método 'Collect' de objeto 'Recordset2'"

¿Alguien sabe como resolverlo?

Muchas gracias.






Editado por Amex - 08/Noviembre/2019 a las 10:37
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1510
Enlace directo a este mensaje Enviado: 08/Noviembre/2019 a las 11:07
Tienes que usar objetos RecordSet2:

- https://docs.microsoft.com/es-es/office/client-developer/access/desktop-database-reference/recordset2-object-dao
Arriba
Amex Ver desplegable
Nuevo
Nuevo


Unido: 06/Noviembre/2019
Localización: León
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Enviado: 08/Noviembre/2019 a las 12:49
me sigue dando el mismo error
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 08/Noviembre/2019 a las 17:16
Hola.
Sin entrar en consideraciones sobre los campos multivalor/datos adjuntos, el siguiente código parece que los "copia":

Dim subrst1 As DAO.Recordset2
Dim subrst2 As DAO.Recordset2
Dim mcampo1 As DAO.Field2
Dim mcampo2 As DAO.Field2
Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset

Set rst1 = CurrentDb.OpenRecordset("CNuevasIncidencias")
Set rst2 = CurrentDb.OpenRecordset("TIncidencias")

Do While Not rst1.EOF
        
rst2.AddNew
''''' aquí todos los campos que no sean multivalor

'+++++actualización campo multivalor++++++
Set mcampo1 = rst1("Documentosadjuntos")
Set mcampo2 = rst2("Documentosadjuntos")
 If mcampo1.IsComplex Then
   Set subrst1 = mcampo1.Value
   Set subrst2 = mcampo2.Value
            If Not (subrst1.BOF And subrst1.EOF) Then
                subrst1.MoveFirst
               Do Until subrst1.EOF
                subrst2.AddNew
                subrst2.Fields("filedata") = subrst1.Fields("filedata")
                subrst2.Fields("filename") = subrst1.Fields("filename")
                subrst2.Update
                subrst1.MoveNext
                Loop
            End If
 End If
'++++fin campo multivalor


rst2.update
rst1.movenext
DoEvents
Loop

Está puesto a título de ejemplo y tiene falta de depurar, optimizar etc etc.
Espero que sirva de ayuda para resolver la duda
Ya comentas.
Un saludo a todos
Arriba
Amex Ver desplegable
Nuevo
Nuevo


Unido: 06/Noviembre/2019
Localización: León
Estado: Sin conexión
Puntos: 16
Enlace directo a este mensaje Enviado: 11/Noviembre/2019 a las 08:38
Genial! Haciéndolo de la manera que has indicado funciona bien.

Cuando dices que tiene falta de depurar, etc. ¿A qué te refieres?

Un saludo y muchas gracias por la ayuda.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 11/Noviembre/2019 a las 11:22
Hola.
Que el código está hecho con un solo ejemplo y tal como lo escribí..
Parece ser que funciona, pero el código escrito por primera y con un sólo caso "siempre"  es susceptible de mejoras. También falta un gestor de errores y si investigas un poco verás que el recodset de los adjuntos tiene también los siguientes campos: FileFlags, FileTimeStamp, FileType y FileURL que se supone harán falta en algunos casos.
Con la prueba hecha con DAO, si no existen, dan errores en el copiado , pero con ADO no. Pero la solución se pedía con DAO
Así es que.....
Espero haber aclarado la duda.
Un saludo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable