SoloCodigo

Programación General => Visual FoxPro => Mensaje iniciado por: magda1984 en Lunes 18 de Julio de 2011, 22:27

Título: grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: magda1984 en Lunes 18 de Julio de 2011, 22:27
hola amigos del foro...tengo un dilema desde hace una semana, estoy queriendo insertar desde mi aplicacion echa en foxpro una imagen en mi base de datos postgres 9.0 y aun no he podido resolverlo.....tengo un formulario de funcionarios la cual tiene cada funcionario una imagen y como son pocos entonces decidi guardar la imagen en la misma base de datos.....he probado insertar en un campo OID con las funciones lo_import pero no me funciona desde el cliente y si quiero probar desde el sql de pgadmin pero no me reconoce y luego cambie el campo a BYTEA ahi pude grabar sin utilizar el lo_import pero no se si estoy grabando la imagen o solo la ruta como dato binario, ya que si hago un select me trae el dato pero no logro visualizar la imagen...ojala y me puedan ayudar y que haya sido bien especifico todo lo que escribi... :flower:
Título: Re:grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: arielb en Lunes 18 de Julio de 2011, 22:57
Hola, bienvenida al foro. Revisa en la ayuda sobre STRTOFILE he intenta, con el valor que estás obteniendo de la base datos, crear el archivo.
Saludos,
Título: Re:grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: magda1984 en Martes 19 de Julio de 2011, 00:04
holaaa...graciasss......siii ya lo intente con STRTOFILE pero no se como crear el archivo......
Título: Re:grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: magda1984 en Martes 19 de Julio de 2011, 01:56
logre insertar la imagen en la base de datos con
vfile = createbynari(thisform.image1.picture)
sqlexec = (bd,'insert into empleados(foto) values(?vfile)

ahora el problema que tengo es al hacer el select que me trae la columna foto con dato GEN y la verdad que no se como extraer el dato que esta en el postgres...
Título: Re:grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: magda1984 en Martes 26 de Julio de 2011, 23:02
ya logre solucionar mi problema despues de tanto leer y probar......yo se que a alguien le a de servir la solucion, las imagenes grabo en el campo BYTEA.....aqui les dejo:

1er paso,si se conectan por ODBC de postgres deben entrar en herramientas administrativas, luego ORIGENES DE DATOS ODBC, luego entran el en DSN DEL SISTEMA y dan doble click en el driver para configurar, ahi les aparece una ventanita y donde dice OPTIONS> DATASOURCE> PAGE2 >deben elegir BYTEA AS LO, esto sirve para que se pueda grabar los datos binarios dentro del campo BYTEA.

2do paso, utilizan este codigo para convertir a dato binario

vfile = CREATEBINARY(FILETOSTR(thisform.image1.Picture))
SQLEXEC(bd," INSERT INTO empleados(apellido,foto2) values('BOLA',?vfile)")

3er paso, el odbc de postgres tiene dos formas de conectarse una por ANSI y la otra por UNICODE, bueno utilizan uno de los dos para grabar y la otra para consultar, porq esto porq al consultar con la opcion selecciona q es BYTEA AS LO, trae mal los datos, entonces utilizo la otra opcion de conectarme sin utilizar la opcion BYTEA AS LO, entonces una vez seleccionada la imagen pongo en , THISFORM.IMAGE1.PICTUREVAL = CONSULTA.FOTO y podran visualizar la imagen sin ningun inconveniente.....espero que les sirva a las personas que deseen grabar sus imagenes o archivos en postgres desde foxpro....
Título: Re:grabar imagen de foxpro via ODBC en postgres 9.0
Publicado por: arielb en Miércoles 27 de Julio de 2011, 05:59
primeramente que bueno que encontraste como resolver tú problema, y segundo muchas gracias por compartir la solución.

Saludos,