Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/03/2007, 14:59
Avatar de Kruzado
Kruzado
 
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: Guardar una imagen en tabla de Access

Hola yo busque en internet y encontre el siguiente codigo, funciona porque yo lo probe
para leer un campo de imagen :

LeerBinary usuarios!firma, Picture1

para grabar el campo en access

usuarios.edit
GuardarBinary usuarios!firma, Picture1
usuarios.update

donde usuarios es mi tabla
picture1 es el control donde almaceno la imagen
y usuario!firma es un campo de mi tabla usuarios donde guardo la imagen, OJO que el formato de este campo es de tipo Objeto OLE

por ultimo debes crear un modulo (.bas) en tu proyecto y copiar lo siguiente

'------------------------------------------------------------------
'Código para grabar y leer imagenes en campos de bases ( 9/Abr/98)
'
'Adaptado de un par de ejemplos de la ayuda de VB5
'
'©Guillermo 'guille' Som, 1998 <[email protected]>
'------------------------------------------------------------------

Option Explicit

Dim DataFile As Integer
Dim Chunk() As Byte
Const conChunkSize As Integer = 16384

Public Sub LeerBinary(campoBinary As Field, unPicture As PictureBox)
'Leer la imagen del campo de la base y asignarlo al Picture
Dim lngCompensación As Long
Dim lngTamañoTotal As Long

'Se usa un fichero temporal para guardar la imagen
DataFile = FreeFile
Open "pictemp" For Binary Access Write As DataFile

lngTamañoTotal = campoBinary.FieldSize
Do While lngCompensación < lngTamañoTotal
Chunk() = campoBinary.GetChunk(lngCompensación, conChunkSize)
Put DataFile, , Chunk()
lngCompensación = lngCompensación + conChunkSize
Loop

Close DataFile
'Ahora se carga esa imagen en el control
unPicture.Picture = LoadPicture("pictemp")

'Ya no necesitamos el fichero, así que borrarlo
On Local Error Resume Next
If Len(Dir$("pictemp")) Then
Kill "pictemp"
End If
Err = 0
End Sub

Public Sub GuardarBinary(campoBinary As Field, unPicture As PictureBox)
'Guardar el contenido del Picture en el campo de la base
Dim i As Integer
Dim Fragment As Integer, Fl As Long, Chunks As Integer

'
'NOTA:
' El recordset debe estar preparado para Editar o Añadir
'

'Guardar el contenido del picture en un fichero temporal
SavePicture unPicture.Picture, "pictemp"

'Leer el fichero y guardarlo en el campo
DataFile = FreeFile
Open "pictemp" For Binary Access Read As DataFile
Fl = LOF(DataFile) ' Longitud de los datos en el archivo
If Fl = 0 Then Close DataFile: Exit Sub

Chunks = Fl \ conChunkSize
Fragment = Fl Mod conChunkSize
ReDim Chunk(Fragment)

Get DataFile, , Chunk()
campoBinary.AppendChunk Chunk()
ReDim Chunk(conChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
campoBinary.AppendChunk Chunk()
Next i
Close DataFile

'Ya no necesitamos el fichero, así que borrarlo
On Local Error Resume Next
If Len(Dir$("pictemp")) Then
Kill "pictemp"
End If
Err = 0
End Sub

con eso estamos
saluos y suerte