Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Guardar una imagen en tabla de Access

Estas en el tema de Guardar una imagen en tabla de Access en el foro de Visual Basic clásico en Foros del Web. Hola, quisiera saber como se guarda una imagen (JPG), en un campo de Access ya sea este OLE o Datos Adjuntos, y viceversa como la ...
  #1 (permalink)  
Antiguo 02/03/2007, 11:00
Avatar de omar_cb11  
Fecha de Ingreso: septiembre-2005
Mensajes: 178
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Guardar una imagen en tabla de Access

Hola, quisiera saber como se guarda una imagen (JPG), en un campo de Access ya sea este OLE o Datos Adjuntos, y viceversa como la puedo mostrar de vuelta en el control Image. La imagen la tengo en un control Image. De antemano gracias.
__________________
A veces hay que darle un golpecito al Pc para que funcione.
  #2 (permalink)  
Antiguo 02/03/2007, 14:59
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
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
  #3 (permalink)  
Antiguo 05/03/2007, 07:09
Avatar de omar_cb11  
Fecha de Ingreso: septiembre-2005
Mensajes: 178
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Guardar una imagen en tabla de Access

Muchas gracias lo probaré!!!
__________________
A veces hay que darle un golpecito al Pc para que funcione.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:29.