La Web del Programador: Comunidad de Programadores
http://www.lawebdelprogramador.com/foros/Delphi/1326796-ayuda-campo-blob.html

ayuda campo blob

Publicado por erikams (8 intervenciones) el 28/04/2012 20:28:47
tengo este codigo y no me guarda la imagen
alguien me podria orientar porque
(no me manda ningun error al guardar)
var
bs : TMemoryStream;
begin
qryimag.Close;
qryimag.SQL.Clear;
qryimag.SQL.Add('INSERT INTO imagenes (pantalla,id, imagen) values (14,:id, :imagen);');
qryimag.ParamByName('id').AsInteger := num;
bs := TMemoryStream.Create;
if imgfot.Picture <> nil Then
if imgfot.Picture.Graphic <> nil Then
imgfot.Picture.Graphic.SaveToStream(bs);
qryimag.ParamByName('imagen').DataType := ftBlob;
qryimag.ParamByName('imagen').LoadFromStream(bs,ftBlob);
qryimag.ExecSQL;
end;

ayuda campo blob

Publicado por E.T. (1045 intervenciones) el 28/04/2012 21:08:00
Intenta cargar tu imagen con formato grafico
1
qryimag.ParamByName('imagen').LoadFromStream(bs,ftGraphic);

O tambien intenta cargarlo desde un archivo
1
qryimag.ParamByName('blbLogo').LoadFromFile(txtRutaLogo.Text, ftGraphic);


Yo lo tengo funcionando de la segunda forma.
Como compruebas que no te está guardando la imagen?
Lo ves por tu programa, o lo ves desde el administrador de la base de datos?

ayuda campo blob

Publicado por erikams (8 intervenciones) el 30/04/2012 18:04:03
asi lo leo nuevamente (consulto)
y manda un error...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
    fldCampo : TField;
    stStream : TStream;
    pngImagen: Tdbimage;
begin
    with qryimag do begin
        qryimag.Close;
        qryimag.SQL.Clear;
        qryimag.SQL.Add('SELECT * FROM imagenes');
        qryimag.Open;
 
        try
          fldCampo := FieldByName('imagen');
          stStream := CreateBlobStream(fldCampo, bmRead);
          pngImagen := Tdbimage.Create(imgfot);
          pngImagen.Picture.Graphic.LoadFromStream(stStream);
          imgfot.Picture.Assign(pngImagen);
          pngImagen.Free;
        except
        end;
    end;
end;

en la base de datos como aparece ?
solo dice [binary] es correcto?

ayuda campo blob

Publicado por E.T. (1045 intervenciones) el 30/04/2012 20:06:02
Ya habia visto ese codigo, lo has modificado, cambiaste el tipo de la variable pmgImagen, utiliza el codigo original, tal vez te marcaba que te faltaba la unidad "pngimage", buscala en la web, y agregala a delphi, con eso el codigo original deberia funcionarte.
Aunque en el codigo original se usan imagenes png, no se que uses tu

ayuda campo blob

Publicado por erikams (8 intervenciones) el 30/04/2012 20:46:17
uso imagenes jpg y bmp

ayuda campo blob

Publicado por E.T. (1045 intervenciones) el 01/05/2012 01:53:39
Para cargar una bmp yo uso lo siguiente
1
2
3
fldCampo := FieldByName('logo');
stStream := CreateBlobStream(fldCampo, bmRead);
imgLogo.Picture.Bitmap.LoadFromStream(stStream);

Para jpg no he probado

ayuda campo blob

Publicado por erikams (8 intervenciones) el 02/05/2012 17:58:00
Hola E.T.
muchas gracias por tu ayuda...ya me funciono
cambie mi forma de leer la imagen
y guaaoo funciono...
mil gracias...

ayuda campo blob

Publicado por erikams (8 intervenciones) el 03/05/2012 22:28:45
ahora mi duda es como lo leo una vez guardado
es decir tengo un memdata, necesito leer el campo cmpleto
para realizar algun cambio y sino para guardarlo nuevamente