Para guardar imágenes en una base de datos de Access, yo hago lo siguiente:
Todo el código siguiente es parcial
Después de creada la base y la tabla creo los siguientes campos:
'Nombre o texto de la imagen
Set cCampos(0) = Tabla.CreateField("Nombre", dbText, 255)
'La extensión del fichero o imagen
Set cCampos(1) = Tabla.CreateField("Extensión", dbText, 3)
'Dimensiones en pixels
Set cCampos(2) = Tabla.CreateField("Ancho", dbLong) 'dbInteger también vale
Set cCampos(3) = Tabla.CreateField("Alto", dbLong) 'dbInteger también
vale
' El tipo si lo soporta VB 5.0 o no
Set cCampos(4) = Tabla.CreateField("Tipo", dbByte)
' Este campo contendrá la imagen
Set cCampos(5) = Tabla.CreateField("Imagen", dbLongBinary)
Para guardar la imagen en el campo Imagen, esto que sigue en
procedimiento
Dim númArch As Integer
Dim númBytes As Long
Dim BytesImagen As Variant ' O String
If Ruta <> "" Then
númArch = FreeFile
'Hallamos los bytes del fichero
númBytes = FileLen(Ruta)
Open Ruta For Binary Access Read As númArch
BytesImagen = Input(númBytes, númArch)
Close númArch ' Cierra el archivo.
On Error GoTo sin_edit
BytesImagen = StrConv(BytesImagen, vbFromUnicode)
' Guardar la imagen en el campo
Data1.Recordset!Imagen.AppendChunk BytesImagen
' La siguiente instrucción también vale
'Data1.Recordset!Imagen = BytesImagen
........................
........................
Para recuperar la Imagen esto que sigue en procedimiento
Dim númArch As Integer
Dim númBytes As Long
Dim BytesImagen As String
On Error GoTo cerrar
BytesImagen = Data1.Recordset!Imagen
BytesImagen = StrConv(BytesImagen, vbUnicode)
On Error GoTo 0
extensión = lblExtensión
DirTempPath Ruta ' Halla el directorio temporal de Windows
Ruta = Ruta & "bif_MRL02_NZ01." & extensión
On Error Resume Next
' Si hay un fichero anterior eliminarlo
Kill Ruta
númArch = FreeFile
númBytes = Len(BytesImagen)
Open Ruta For Binary Access Write As númArch
Put #númArch, , BytesImagen
Close númArch
' Para una imagen "ICO", "BMP", "DIB", "RLE", "WMF", "EMF", "JPG", "GIF"
With Picture1
.AutoSize = True
.Picture = LoadPicture(Ruta)
.AutoSize = False
End With
.........................
.........................