Imagen visual basic almacenada en tabla access

Estimado experto sabe mire este es el problema tengo una tabla de access 2003 la cual esta conectada por medio de dsn ODBC a una interfaz vb6.0 con la cual puedo ver buscar borrar y editar los registros esta el momento estos son del tipo texto o numérico pero quería añadir un campo llamado foto a la tabla y hacer que sea igual que el resto de los otros campos es decir visualizable borrable etc como se puede lograr este con que objeto y código
Desde ya muchas gracias experto
Si necesita el código o parte de el para ver como lo hice con los otros campos solo avíseme

3 respuestas

Respuesta
1
El campo en access sera un objeto ole
Agregas un control image en tu form y lo linkas contra el control image por medio del data source y del data field
Para guardar, etc se trata como un campo más
Respuesta
1
Lo primero, disculpa el retraso que he estado unos días fuera sin internet.
Lo segundo, si no sabes programar te va a resultar complicado. Ese tipo de utilidad se puede hacer de muchas maneras.
Lo más sencillo es que grabes en la BD la ruta de la foto. Y que la visualices en cualquier forma.
Añade un campo en la BD que se llame 'Ruta' y en el formulario añade una caja de texto que se llame 'ruta', revisa el código y copia el de cualquier otro campo de texto ( adaptando los nombres) para que haga las operaciones. ( Si se usa un control data es posible que no tengas que hacer mucho). Cuando tengas esa parte me lo comentas y hacemos la 2ª que es 'ver' la foto. Teniendo la 1ª esta el 90% hecho.
Perdón por la demora pero recién hoy retome la aplicación.
¿Me perdí en la parte que dice añade un textbox al form cual disculpe mi ignorancia cual es el objetivo de eso? ¿Qué revise el código y copie el de cualquier campo de texto? Mis campos de texto no tienen código puesto que solo sirven para mostrar los campos de textos o numéricos de la tabla el código lo tengo en los botones grabar borrar cambios, por lo demás no uso control data la conexión es mediante creación de DSN ODBC (ese que queda en herramientas administrativas e instalación del driver ) y por código. Yo creo que primero que todo debo añadir los fotos tengo las fotos en la misa carpeta que la base debo escribir el nombre del archivo o la dirección C:... ¿y todo lo que sigue?
Te decía que añadas los campos de texto por que si almacenas en ellos los path completos de las fotos te va a resultar más sencillo luego visualizarlas, apenas son dos lineas por foto.
Si tienes el mantenimiento de datos por código mejor, te será más fácil hacerlo todo.
La otra opción es abrir un campo blob en Access que te va a dar problemas y es más complicado de gestionar, no te lo recomiendo.
Respuesta

Otra solución puede ser mediante ADO.

Hace tiempo vengo usando algo similar, y la imagen se guarda directamente en la Base dde Datos, en un campo de tipo OLE.

A continuación les dejo un ejemplo, el cual descargué hace años de la Web del Guille.

Agrega un Módulo (. Bas) en VBasic, y pega el código 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
    On Local Error GoTo sigue
    unPicture.Picture = LoadPicture("pictemp")
sigue:
    If (Err.Number = 481) Then unPicture.Picture = LoadPicture()
    '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
    On Local Error Resume Next 'Err 380: El valor de la propiedad no es válida
    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

Para guardar la imagen en la BD, dentro del procedimiento para actualizarla, pega el código siguiente:

Call GuardarBinary(Nombre del campo Foto, Control Picture donde está la imagen)

Para Leer la imagen de la BD y mostrarla en un control (PictuteBox), usa el sigte código:

Call LeerBinary(Nombre del campo Foto, Control Picture donde se mostrará la imagen)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas