Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   acerca de los campos blob (https://www.clubdelphi.com/foros/showthread.php?t=78032)

anubis 14-03-2012 15:32:02

acerca de los campos blob
 
Buenas,

Aqui seguimos dando algo de guerra :)
Estoy usando sqlite y lazarus, además del sqlmanager a través del firefox.

Estaba leyendo (creo que erróneamente) que si tengo un campo blob, le puedo añadir la ruta donde está la imagen que quiero para ese campo, pero evidentemente no funciona bien al meter un dbimage e intentar verla (out of memory).

Mi pregunta, a ver si me arrojais algo de luz a este tema, es como puedo añadir una imagen a cada registro y despues poder ver cada imagen asociada a cada registro.

He visto un ejemplo que habeis publicado pero no me aclara mucho.
Y la otra gran pregunta, si es que esto al final me sale, si es posible guardar archivos pdf en esos campos blob.

Gracias a todos

Casimiro Noteví 14-03-2012 15:39:16

En los campos blob puedes guardar lo que quieras.
Exactamente ¿qué problema tienes?.

anubis 14-03-2012 15:42:09

gracias por contestar,

Bueno, desde sqlite manager he guardado una imagen (ya lo cambie con respecto a la anterior pregunta que quite el enlace).

Aohra mismo es, si pongo un dbimage apuntando al campo blob, como la visualizo.

Y la otra sería como desde programa meto una imagen.
gracias de nuevo.

Casimiro Noteví 14-03-2012 19:03:05

Haz una búsqueda por los foros, es un tema que se ha tratado bastantes veces, a ver si te sirve alguno de estos enlaces escogidos al azar: 1, 2, 3, 4 y 5

anubis 15-03-2012 01:32:07

Gracias de verdad.

Encontre varias cosas que me pudieran servir, pero tengo un problema con esto:

Código Delphi [-]
BlobStream:=form1.zquery1.CreateBlobStream(form1.zquery1.FieldByName('factur'),bmRead);

Me dice que bmRead indentificador no encontrado,

El resto si esta bien declarado, BlobStream es un TStream, así no se que me falta o que unidad tengo que añadir al uses para que me reconozca el bmRead.

Gracias mil

anubis 15-03-2012 03:08:40

Perdon por duplicar, pero no pude editar el mensaje.

Mi error estaba en que no tenia la unit db, que es la que hace que me de error el bmread, perdon.

Casimiro Noteví 15-03-2012 09:36:49

Entonces, ¿lo has solucionado?

anubis 15-03-2012 15:33:53

hola de nuevo.

Bueno, parece que no quiere funcionar.

tengo un blob con una imagen jpg almacenada y, en funcion de este código:


Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
 begin
    jpg := TJPEGImage.Create;

 end;
Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);

var
Stream: TStream;
begin

  Stream := form1.ZQuery1.CreateBlobStream(form1.ZQuery1.FieldByName('factur'),bmread); // Lo mismo que el anterior caso pero ahora en modo de escritura.
 jpg.LoadFromStream(Stream);     // Cargamos el BLOB al objeto JPEG
 Stream.Destroy;                 // liberamos...
 Image1.Picture.Assign(jpg);
end;

Me da el siguiente error:

Jpeg error.

La unidad jpeg no la tengo en lazarus asi que no la puedo asignar, pero viene de la unidad graphics, sino el tjpegimage me habria dado error de compilacion.

mightydragonlor 15-03-2012 16:30:30

No te sirve el TDBImage enlazandolo directamente al control de Zeos?

anubis 15-03-2012 16:42:16

Gracias ya probe a ponerlo, pero no sale la imagen.

O hay que añadirle algo mas?

edito:

Acabo de crear un programa nuevo para probar la carga de imagen y me sale violacion de acceso.

Código Delphi [-]

jprocedure TForm1.Image1Click(Sender: TObject);

  var bmp: TBitmap; Stream: TStream;
begin
 if not OpenPictureDialog1.Execute then Exit;
 jpg.LoadFromFile(OpenPictureDialog1.FileName);
end;

Si abre el dialog, si me deja elegir y cuando le doy a aceptar me sale ese error de violación de acceso

mightydragonlor 15-03-2012 16:46:34

Pues no que yo sepa, un TZQuery, un TDataSource y ya, eso es lo que hago normalmente.

anubis 15-03-2012 19:25:50

Hola.
Ya he conseguido guardar y recuperar.

Código Delphi [-]
form1.zquery1.edit;
JPG:=TJPEGImage.Create;
if not OpenPictureDialog1.Execute then Exit;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
Image1.Picture.Assign(JPG);
 Stream := form1.ZQuery1.CreateBlobStream(form1.zquery1.FieldByName('factur'), bmWrite); // Asignamos el BLOB a un stream
 jpg.SaveToStream(Stream);        // y guardamos la imagen como JPEG (convertido), en el stream
 Stream.Destroy;// liberamos.
 form1.ZQuery1.ApplyUpdates;


Me faltaría saber si se puede hacer lo mismo con un pdf en vez de un jpg

Gracias a todos


La franja horaria es GMT +2. Ahora son las 07:21:25.

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