Access - Recuperar datos incrustados

 
Vista:

Recuperar datos incrustados

Publicado por Ignacio Soler Torroja (231 intervenciones) el 10/10/2001 13:27:48
Tengo el siguiente problema y no consigo resolverlo. En una tabla hay un campo definido como tipo de datos "objeto OLE". Este campo contiene imágenes incrustadas (No vinculadas). Necesito extraer esas imágenes y crearme un fichero por cada una de ellas. Me creo un fichero con "CreateObject("Scripting.FileSystemObject")" pero no le puedo asociar la imagen por medio de un recordset.
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
Imágen de perfil de Alejandro

Recuperar datos incrustados

Publicado por Alejandro (4142 intervenciones) el 18/04/2023 23:29:54
Puedes intentar lo siguiente para recuperar las imágenes incrustadas en el campo "objeto OLE":

1. Crea una consulta que seleccione el campo OLE y guárdala. Por ejemplo, nómbrala "qryImagenes".
2. Crea una variable del tipo Recordset para recorrer los registros de la consulta. Por ejemplo, nómbrala "rsImagenes".
3. Abre la consulta "qryImagenes" en el recordset.
4. Recorre cada registro del recordset utilizando un bucle, y guarda el contenido del campo OLE en un archivo utilizando el método "SaveToFile" de la variable FileSystemObject que ya has creado.
5. Cierra el recordset.

Aquí te dejo un ejemplo de código para que lo adaptes a tu situación particular:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dim fso As Object
Dim rsImagenes As Recordset
Dim strRuta As String
Dim strArchivo As String
 
' Establecer la ruta donde se guardarán las imágenes
strRuta = "C:\MisImagenes\"
 
' Crear un objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
 
' Abrir la consulta que contiene el campo OLE
Set rsImagenes = CurrentDb.OpenRecordset("qryImagenes")
 
' Recorrer cada registro de la consulta
Do Until rsImagenes.EOF
    ' Establecer el nombre del archivo
    strArchivo = strRuta & "Imagen" & rsImagenes!ID & ".jpg"
 
    ' Guardar el contenido del campo OLE en un archivo
    fso.CreateTextFile strArchivo, True
    fso.GetFile(strArchivo).OpenAsBinaryStream.Write rsImagenes!CampoOLE
    fso.GetFile(strArchivo).Close
 
    ' Mover al siguiente registro
    rsImagenes.MoveNext
Loop
 
' Cerrar el recordset y liberar recursos
rsImagenes.Close
Set rsImagenes = Nothing
Set fso = Nothing

Este código crea un archivo para cada registro de la consulta "qryImagenes", utilizando el ID de cada registro para establecer el nombre del archivo. Puedes modificar el código para ajustarlo a tus necesidades específicas.
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