Agregar foto a un registro - VB 6.0 + Access 2010

¿Cómo les va? Desde ya muchas gracias por leer mi consulta y tratar de darme una mano!

Tengo el siguiente código que, al parecer me toma la foto... Pero cuando luego quiero traer el registro y que muestre todos los campos, en el campo de la foto me dice que:

Código para ingresar foto a la base de datos.
Por lo que leí, el campo foto tiene que ser un String…
Private Sub cmdAltaProd_Click()
Dim Cod_Producto As String
Dim Desc_Producto As String
Dim Cant_Producto As Integer
Dim IVA_Incluido As Double
Dim Precio_Parcial As Double
Dim Importe As Double
Dim StrNuevoProducto As String
Dim StrMaxProducto As String
Dim StrProductoExistente As String
Dim RstProductoExistente As New ADODB.Recordset
Dim Tipo_IVA As Double
Dim FotoProd As String
If cmbIVA.Text = "10.5" Then
Cod_Producto = Trim(TxtProductos(0).Text) ' Almacenar 12 digitos
Desc_Producto = TxtProductos(1).Text
Cant_Producto = Val(TxtProductos(2).Text)
Precio_Parcial = CDbl(TxtProductos(3).Text)
Importe = Cant_Producto * CDbl(Precio_Parcial)
IVA_Incluido = CDbl(Precio_Parcial) + CDbl(Precio_Parcial) * (0.105)
Tipo_IVA = CDbl(10.5)
FotoProd = ImgProd.Picture
MsgBox IVA_Incluido
Set RstProductos = New ADODB.Recordset
StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Parcial,IVA_Incluido,Tipo_IVA,FotoProd) VALUES ('" & Trim(Cod_Producto) & "','" & Desc_Producto & "'," & Cant_Producto & ",'" & CDbl(Precio_Parcial) & " $','" & CDbl(IVA_Incluido) & " $','" & Str(Tipo_IVA) & "','" & Str(FotoProd) & "')"
‘LUEGO DE INGRESAR EL REGISTRO EL CAMPO FOTO COMO UN ENTERO NEGATIVO: -754642451
RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic
MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."
'AHORA… Cuando quiero traer el registro y mostrar la imagen en el control, me dice se requiere un objeto y me muestra lo que está en la imagen.

1 Respuesta

Respuesta
2

El problema puede estar en que cuando haces:

FotoProd=ImgProd.Picture 

Para coger el nombre del archivo, pueden pasar dos cosas:

1º/ Si el cuadro de imagen "incrusta" las imágenes, solo te coge el nombre (y extensión) del archivo imagen, no su ruta completa (al menos en mi caso).

Luego cuando quieres cargar la imagen correspondiente, al hacer:

ImgProd.Picture=Str(!FotoProd)

Al no tener la ruta completa al archivo te dará un error.

2º/ Si el cuadro de imagen las "vincula", te devolverá la ruta completa con nombre y extensión del archivo, y no deberías tener problemas.

Si como nombre del archivo te devuelve ese número, algo raro está pasando...

Hola!!! Muchas gracias por responder!! Ahora, luego de una modificación, me tira el error: 

Me faltó un detalle... Para guardar,  utilizo tres controles... Un control Image (ImgProd), un CommondDialog (Dialogo) que lo puse adentro del Image y un CommandButton  ... Primero hago clic en un botón CommandButtton para cargar la imagen en el control Image. El código del botón es elsiguiente... 

Private Sub cmdAgregaFoto_Click()
      Dialogo.ShowOpen
      ImgProd.Picture = LoadPicture(Dialogo.FileName)
End Sub

Luego de cargar la imagen en el control Image hago clic en Guardar.

Este es parte del código para gardar...

Cod_Producto = Trim(TxtProductos(0).Text) ' Almacenar 12 digitos
Desc_Producto = TxtProductos(1).Text
Cant_Producto = Val(TxtProductos(2).Text)
Precio_Parcial = CDbl(TxtProductos(3).Text)
Importe = Cant_Producto * CDbl(Precio_Parcial)
IVA_Incluido = CDbl(Precio_Parcial) + CDbl(Precio_Parcial) * (0.105)
Tipo_IVA = CDbl(10.5)
FotoProd = Str(ImgProd.Picture)
Set RstProductos = New ADODB.Recordset
StrNuevoProducto = "INSERT INTO PRODUCTOS(Cod_Producto,Desc_Prod,Cantidad,Precio_Parcial,IVA_Incluido,Tipo_IVA,FotoProd) VALUES ('" & Trim(Cod_Producto) & "','" & Desc_Producto & "'," & Cant_Producto & ",'" & CDbl(Precio_Parcial) & " $','" & CDbl(IVA_Incluido) & " $','" & Str(Tipo_IVA) & "','" & Str(FotoProd) & "')"
RstProductos.Open StrNuevoProducto, Base, adOpenStatic, adLockOptimistic
MsgBox "El Producto " & frmCompras.TxtProductos(1).Text & " Se ha incorporado al STOCK. ", vbInformation, "ALTA DE PRODUCTOS."

Luego de AGREGARLO quiero que me muestre todos los campos, incluida la foto del producto. 

StrBuscaProducto = "SELECT Desc_Prod,Cantidad,Precio_Parcial,Tipo_IVA,IVA_Incluido,FotoProD from PRODUCTOS WHERE COD_Producto ='" & TxtProductos(0).Text & "'"
Set RstBuscaProducto = New ADODB.Recordset
RstBuscaProducto.Open StrBuscaProducto, Base, adOpenStatic, adLockOptimistic
With RstBuscaProducto
If .BOF = False And .EOF = False Then
cmdModificaProd.Enabled = True
TxtProductos(1).Text = !Desc_Prod
TxtProductos(2).Text = Val(!Cantidad)
'Format(CCur(TxtProductos(3).Text), "###,###,###,##0.00")
TxtProductos(3).Text = Format(CCur(!Precio_Parcial), "$##,###,###,##0.00")
IVA_Incluido = CDbl(!IVA_Incluido)
TxtProductos(4).Text = Format(CCur(CDbl(IVA_Incluido)), "$##,###,###,##0.00")
ImgProd.Picture = Str(!FotoProd)

Y me dice: No coinciden los tipos.

El campo FotoProd en la base de datos le cambié a la propiedad a Objeto Ole...

Lógico que te salte ese error ahora porque un campo de tipo OLE contiene un archivo binario y no lo puedes convertir a cadena de texto...

Y digo yo, si en un principio, con el campo FotoProd como texto, cargas la imagen a través del diálogo y te funciona, pásale el valor de la imagen en ese momento a FotoProd (FotoProd=Dialogo.FileName) y cuando la quieras mostrar, vuelves a hacer lo mismo que en tu botón para cargarla (sin abrir el diálogo, claro): ImgProd.Picture=LoadPicture(FotoProd)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas