Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Guardar una imagen (TPicture) en un campo de DB (https://www.clubdelphi.com/foros/showthread.php?t=72064)

ElDuc 26-01-2011 10:38:50

Guardar una imagen (TPicture) en un campo de DB
 
Hola a todos,

Estoy liado con un pequeño programa y necesito guardar/recuperar una imagen en un campo de una DB.

Por el momento he creado una Db Access (sólo para pruebas) en la que he creado una tabla que tiene 3 campos:
  1. Id - Autoincremantal - Id del registro
  2. Name - String - Nombre del registro (imagen)
  3. Image - Objeto OLE - Para guardar la imagen
El el programa he definido un objeto Q:=TAdoQuery que enlazo con la tabla comentada.

Código Delphi [-]
 
...
Q.Open;
Q.Insert;
Q.FieldValues['Name']:='Nombre_1';
*** Q.FieldValues['Image']:=MyImage; (Objeto TPicture en el que está la imagen)
Q.Post.
...

Al compilar, en la línea (***) me da el siguiente error:
Incompatible types: 'Variant' and 'TPicture'

Es evidente que no lo esoy haciendo bien.

Por favor, ¿podéis ayudarme?

Gracias de antemano.

Aleca 26-01-2011 14:33:10

proba de esta forma.
Código Delphi [-]
Q.FieldValues['Image']:=MyImage.Picture.Graphic;
otra forma
Código Delphi [-]
      FieldByName('IMAGE').Assign(MyImage.Picture.Graphic);

ElDuc 27-01-2011 07:43:02

Hola Aleca, gracias por tu colaboración.

La segunda opción me funciona, pero no soy capaz de recuperar la imagen a un TPicture.

Cuando digo que me funciona es porque no me da ningún error y en la DB observo que se ha almacenado algo, pero tampoco se que información hay ya que, como te digo, no puedo visualizarla posteriormente.

Si puedes hechame una mano, gracias.

Aleca 27-01-2011 10:47:29

Cita:

Empezado por ElDuc (Mensaje 389003)
Hola Aleca, gracias por tu colaboración.

La segunda opción me funciona, pero no soy capaz de recuperar la imagen a un TPicture.

Cuando digo que me funciona es porque no me da ningún error y en la DB observo que se ha almacenado algo, pero tampoco se que información hay ya que, como te digo, no puedo visualizarla posteriormente.

Si puedes hechame una mano, gracias.

con access no he trabajado pero probá hacerlo de esta forma.
Código Delphi [-]
  Image1.Picture.Assign(Q.FieldByName('IMAGE'));
espero que te sirva.:)

Delfino 27-01-2011 11:21:28

No has dicho q componente estas usando :confused:

A mi (y a muchos) siempre me ha servido el componente TJvDBImage de la suite JVCL sin ningún problema..

ElDuc 27-01-2011 13:21:09

Hola Aleca,

Con la opción que me das para cargar el field en el picture me da el error "bitma is not valid"

Hola Delfino,

Trabajo con ADO, nunca he trabajado con la librería que me comentas.

---

De todas formas he conseguido hacerlo pasando el field a un TJpegImage y éste a el picture, pero eso me da el problema que sólo puedo trabajar con imágenes de tipo jpg y no es lo que necesito, pero creo que vamos por buen camino.

Sabéis si puedo saber el timo de imagen que hay en un picture (jpg, gif, png, bmp, etc)

Muchas gracias a ambos por vuestra ayuda.

Delfino 01-02-2011 23:09:29

Cita:

Empezado por ElDuc (Mensaje 389034)
Trabajo con ADO, nunca he trabajado con la librería que me comentas.

Pues ya es hora ;)


La franja horaria es GMT +2. Ahora son las 07:40:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi