Visual Basic - Imagenes en tabla de Access

Life is soft - evento anual de software empresarial
 
Vista:

Imagenes en tabla de Access

Publicado por SOFTWARCITO (10 intervenciones) el 22/06/2006 05:48:04
Hola que tal, primero que nada un saludo a todos los programadores de visual basic 6.

El problema que tengo es que he construido un programa en visual basic 6 con los datos de los clientes para un negocio, pero ahora me han pedido que se pueda tener la opcion de agregar una imagen al la base de datos, esto es, que cada ves que de clic en cada cliente, aparesca la foto del mismo.

el sistema lo he terminado con una tabla de access, ya busque informacion acerca de como agregar imagenes, pero todas las explicaciones son inconclusas, lo que quiero hacer es que al agregar una imagen la imagen se pueda acomodar en el picture o image o en algun control que no ocupe espacio en la base de acces sino que sea la tabla de access un hipervinculo a la imagen que debe de estar en una carpeta del direcorio raiz, creo que la funcion es muy sencilla pero no he logrado hacerlo.

Agradeceria a todos los lectores programadores de este este leguaje me puedan ayudar enviandome el codigo nesesario para no tener problemas y solucionar esto que ya son 4 dias sin poder terminar.

pd: si lo desean tengo un sistema de inventario y punto de venta completo, si el codigo fuente que me llegaren a pasar para terminar mi problema de las imagenes se los regalo en caso de que lo queran.

saludos desde san luis potosi. mexico.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Imagenes en tabla de Access

Publicado por Urrunaga (10 intervenciones) el 22/06/2006 06:08:43
Has probado con la funcion LoadPicture?

En tu Base de datos debes de tener un campo texto que tenga suficiente espacio como para guardar la ruta de la imagen original del Cliente.
Cuando quieras guardar la imagen del cliente lo que en realidad guardas es la ruta para luego leerla con la funcion LoadPicture

Ejm:
Dim sRutafoto$
sRutafoto$=rs_tabla_cliente!c_ruta_foto

if Len(Dir$(sRutafoto,vbArchive))>0 Then 'Valida que exista
Set imgFotoCli.Picture=LoadPicture(sRutafoto) 'Asigna
else
Set imgFotoCli.Picture=LoadPicture("") 'Vacio
end if

Espero te ayude

PD: No es recomendable guardar la imagen en la BD y menos si es en Access por lo poco que aguanta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imagenes en tabla de Access

Publicado por SOFTWARCITO (10 intervenciones) el 22/06/2006 08:42:28
hola primero que nada gracias por contestar, llevo apenas unos meses programando y no se donde colocar el codigo que me diste, lo intente colocar en un comandboton, te agradeceria demaciado si me dieras una explicacion de el codigo que me diste.

agradeso tu atencion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imagenes en tabla de Access

Publicado por SOFTWARCITO (10 intervenciones) el 22/06/2006 08:42:34
hola primero que nada gracias por contestar, llevo apenas unos meses programando y no se donde colocar el codigo que me diste, lo intente colocar en un comandboton, te agradeceria demaciado si me dieras una explicacion de el codigo que me diste.

agradesco tu atencion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imagenes en tabla de Access

Publicado por Mario (107 intervenciones) el 22/06/2006 21:50:40
En un bton pongo este codigo
Private Sub btnFoto_Click()
'En un CommonDialog abro para buscar la foto
cdlgFoto.Filter = "Ficheros de imagenes | *.JPG; *.BMP; *.GIF"
cdlgFoto.ShowOpen

If cdlgFoto.FileName = "" Then
MsgBox "Operacion cancelada", vbInformation, "Cuadro de informacion"
Exit Sub
Else
sCaminoFoto = cdlgFoto.FileName
'Cargo la foto en un control Imagen que tengo en el Form
imgFoto.Picture = LoadPicture(sCaminoFoto)
End If

End Sub

Cuando voy a salvar la imagen en la tabla
With MiTabla
.AddNew
If sCaminoFoto <> "" Then
GuardarBinary .Fields("foto"), imgFoto
End If
.Update
End With

Y GuardarBinary es un procedimiento
Public Sub GuardarBinary(ADOField As ADODB.Field, unPicture As Image)

' Guardar el contenido del Picture en el campo de la base
Dim i As Long
Dim Fragment As Long
Dim nSize As Long
Dim nChunks As Long
'
' Guardar el contenido del picture en un fichero temporal
SavePicture unPicture.Picture, "pictemp"

' Leer el fichero y guardarlo en el campo
nFile = FreeFile
Open "pictemp" For Binary Access Read As nFile
nSize = LOF(nFile) ' Longitud de los datos en el archivo
If nSize = 0 Then
Close nFile
Exit Sub
End If
'
' Calcular el número de trozos y el resto
nChunks = nSize \ mBuffer
Fragment = nSize Mod mBuffer
ReDim Chunk(Fragment)
'
Get nFile, , Chunk()
ADOField.AppendChunk Chunk()
ReDim Chunk(mBuffer)
For i = 1 To nChunks
Get nFile, , Chunk()
ADOField.AppendChunk Chunk()
Next i
Close nFile
'
' 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

Ahora cuando llamo es record de la tabla para ubicarlo en el control Imagen que tengo en el Form uso el procemiento

Public Sub LeerBinary(ADOField As ADODB.Field, unPicture As Image)

' Leer la imagen del campo de la base y asignarlo al Picture
'--------------------------------------------
' Este procedimiento no es necesario usarlo
' si el Picture está ligado a un data control
'--------------------------------------------
Dim nChunks As Long
Dim nSize As Long
Dim Fragment As Long
Dim i As Long
'
' Se usa un fichero temporal para guardar la imagen
nFile = FreeFile
Open "pictemp" For Binary Access Write As nFile
'
' Calcular los trozos completos y el resto
nSize = ADOField.ActualSize
nChunks = Int(nSize / mBuffer)
Fragment = nSize Mod mBuffer
Chunk() = ADOField.GetChunk(Fragment)
Put nFile, , Chunk()
For i = 1 To nChunks
Chunk() = ADOField.GetChunk(mBuffer)
Put nFile, , Chunk()
Next
Close nFile
Erase Chunk
' Ahora se carga esa imagen en el control
unPicture.Picture = LoadPicture("pictemp")

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

Espero haberte ayudado, cualquier cosa mandame un correo, Ah, estos codigos no son de mi autoria, si no mal recuerdo fue gracias al Guille que puede realizar esta tarea
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar