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

Recuperar imágen desde la bbdd

Estas en el tema de Recuperar imágen desde la bbdd en el foro de Visual Basic clásico en Foros del Web. Hola, intento programar una bbdd Access con VBA y me he encontrado con una dificultad, os comento: Estoy intentando mostrar en un formulario un control ...
  #1 (permalink)  
Antiguo 29/07/2008, 05:19
Avatar de Worp9975  
Fecha de Ingreso: mayo-2006
Ubicación: LV-426
Mensajes: 203
Antigüedad: 18 años
Puntos: 1
Recuperar imágen desde la bbdd

Hola, intento programar una bbdd Access con VBA y me he encontrado con una dificultad, os comento:

Estoy intentando mostrar en un formulario un control Microsoft Forms 2.0 Image ya que el que viene por defecto con Access no soporta imágenes en JPG.

El control Image solo sabe cargas las imágenes con LoadPicture indicandole la ruta en disco y eso lo hace muy bien pero yo quiero que coja la imágen desde la bbdd. Alguien tiene alguna idea de como puedo hacer esto o si conoceis el nombre de algun control hecho por otro fabricante (si es gratis mejor) ??¿¿

Gracias a to2.
__________________
Time is the fire in which we burn
  #2 (permalink)  
Antiguo 29/07/2008, 14:59
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Recuperar imágen desde la bbdd

No se si es lo que consultas, pero proba

Public Sub LeerBase(campoBinary As Field, unPicture As PictureBox)
Dim lngCompensación As Long
Dim lngTamañoTotal As Long

DataFile = FreeFile 'Fichero temporal para guardar la imagen
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
unPicture.Picture = LoadPicture("pictemp") 'Se carga la imagen en el control

On Local Error Resume Next
If Len(Dir$("pictemp")) Then ‘el fichero se borrarlo
Kill "pictemp"
End If
Err = 0
End Sub

Public Sub GuardarBase(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
SavePicture unPicture.Picture, "pictemp"

DataFile = FreeFile
Open "pictemp" For Binary Access Read As DataFile
Fl = LOF(DataFile
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

On Local Error Resume Next
If Len(Dir$("pictemp")) Then
Kill "pictemp"
End If
Err = 0
End Sub
'*********************
Private Sub Guardar_Click()
Data1.Recordset.Edit
Frame1.Visible = False
Picture1.Picture = Image1.Picture
GuardarBase Data1.Recordset!Imagen, Picture1
Data1.Recordset.Update
End Sub
‘********************
Private Sub Form_Load()
LeerBase Data1.Recordset!Imagen, Picture1
End Sub

La base de datos debe de tener un campo “imagen” con el tipo de dato “Objeto OLE”, en mi ej

Yo tengo enlazado el Picture con un FileListBox, donde al selecciono la imagen se carga en el Picture y con el CommandButtom se guarda en la BDato

saludos!!
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 11:38.