Hola amigos
He intentado guardar una imagen en postgresql desde vb6 y no consigo grabar. Estoy usando PostgreSQL 9.3.14, enmi tabla tengo el campo foto tipo bytea, lei que este era el campo para almacenar imagenes.
Estoy usando estas lineas:
Dim lRst As ADODB.Recordset
Dim lImg As ADODB.Stream
Set lRst = New ADODB.Recordset
Set lRst.ActiveConnection = m_cnn.Conexion
lRst.Open "select * from tb_imagenes", , adOpenDynamic, adLockOptimistic
Set lImg = New ADODB.Stream
lImg.Type = adTypeBinary
lImg.Open
lImg.LoadFromFile m_ruta_imagen
lRst.AddNew
lRst!id = m_id + 1
lRst.Fields("foto").Value = lImg.Read 'Aqui me salta error
lRst.Update
lRst.Close
Set lRst = Nothing
lImg.Close
Set lImg = Nothing
Alguna pista para solucionarlo?
Ado Stream - Almacenar y recuperar imágenes (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/351-ado-stream-imagenes.htm)
Descargar ejemplo [desde www.recursosvisualbasic.com] (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/zip/ado-stream-leer-grabar-imagen.zip)
Hola okik
Gracias por responder pero ya habia probado ese ejemplo igual no me funciona.
Estoy intentando usar
rs("Foto").AppendChunk arrImagen()
pero igual tambien me da error 3219 la operacion no esta permitida en este contexto
Alguna pista amigos?
Gracias
ay amigo, amigo por que no funcionará :D
pues te explico.
yo ejecuté el código ayer y tampoco me funcionaba de echo tuve problemas. Lo ejecuté en el PC y aquí tengo W7 en una partición, con VS2012. Estuve añadiendo referencias de base de datos. Esto me provocó una serie de problemas, relacionados con ntdll.dll y tuve que restaurar a un punto anterior, porque no supe como arreglarlo.
Creo que se añadieron o se modificaron claves de registro y se me producían errores en Internet Explorer y en Visual Studio 2012, buen este es que ni se podía trabajar.
Hoy he ejecutado el código en Windows XP, después de instalarle el VB6. Y funciona a la perfección.
Así que la razón que no funcione puede ser porque usas Windows 7/8/10 o porque tengas instalado VS.NET. No se qué razón de las dos puede ser. Todos los sistema que tengo, tengo metido el VS.NET, excepto en Linux y XP que lo tengo en máquina virtual. Así que me quedo con la duda. La razón exacta que produce esta incompatibilidad no la se.
El caso es que el código funciona y la razón que a ti no te funcione puede ser la misma...
El código del enlace, el que está en el ZIP, usa
Microsoft ActiveX Data Objects 2.8
usa la librería:
C:\Program Files (x86)\Common Files\System\ado\msado15.dll
y la versión del archivo original es:
2.81.1132.0
mientras que el que yo tengo en W7 es:
6.1.7601.17514
Esta actualización puede que sea el problema.
Probaría sustituir la nueva por a vieja a ver si en W7 me funciona el código, pero después de lo de ayer, no me arriesgo XD
Hola!
Fijate si esta solucion (http://stackoverflow.com/questions/29036160/insert-retrieve-image-in-postgresql-database-form-vbnet) te sirve.
Saludos!
Cita de: MCKSys Argentina en 26 Septiembre 2016, 23:14 PM
Hola!
Fijate si esta solucion (http://stackoverflow.com/questions/29036160/insert-retrieve-image-in-postgresql-database-form-vbnet) te sirve.
Saludos!
Fíjate que el lo quiere hacer en VB6. El código que le das es para NET. Si usa NET igual le vale :P y teniendo en cuenta lo de la incompatibilidad quizás sea mejor que use NET.
Hola okik
Probe cambiando a 2.5 el ado y nada, debe ser lo que dices el OS o el VS.Net como tengo Win10 y VS2015CE pero bueno use otra solucion y es guardar la imagen como cadena en la bd y luego la reconstruyo desde la cadena.
Luego lo veo con mas trankilidad porque estoy contra el tiempo.
Igual comento la solución en breve
Gracias amigos.