** 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 Invertir el orden de clasificación
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Tema: Anexar registros con "documentos adjuntos" a tabla
    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
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: 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: 08/Noviembre/2019 a las 12:49
me sigue dando el mismo error
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1512
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 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
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable