Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Sp,firebird,campo blob binary (https://www.clubdelphi.com/foros/showthread.php?t=58138)

Luis M. 09-07-2008 22:07:53

Sp,firebird,campo blob binary
 
Hola.
A ver si me podéis ayudar con este tema.
Uso D2007, Firebird 2.0.4 y MDO

Tengo el siguiente Sp:
Código Delphi [-]
CREATE PROCEDURE BUSCA_ESTADO (codigo varchar(10))
returns ( bandera blob sub_type 0 segment size 80, nombre varchar(30))
as
begin
  /* Procedure Text */
  select NOMBRE,IMAGEN from ESTADOS where CODIGO = :codigo
  into :nombre,:bandera;
  suspend;
end

Desde código lo llamo:

Código Delphi [-]
    DM.SP.StoredProcName := 'BUSCA_PAIS';
    DM.SP.Prepare;
    try
      DM.SP.Params.ParamValues['CODIGO'] := cCodigo;
      DM.SP.ExecProc;
      DBPaisBandera.Picture := DM.SP.ParamByName('BANDERA').Value;<- Aquí es donde no se como hacerlo.
      LabelPais.Caption := DM.SP.ParamByName('NOMBRE').AsString;
    finally
      DM.SP.UnPrepare;
    end;

DBPaisBandera es JvDBImagen.

¿Alguna sugerencia?
Gracias por vuestra ayuda.
Saludos.

celades1 10-07-2008 06:16:16

hola

Código Delphi [-]
var STREAM:TMemoryStream;
bitmap:tbitmap;
begin
DM.SP.StoredProcName := 'BUSCA_PAIS';    DM.SP.Prepare;    try
      DM.SP.Params.ParamValues['CODIGO'] := cCodigo;
      DM.SP.ExecProc;
      STREAM:=TMemoryStream.Create;
      bitmap:=tbitmap.Create;
      DM.SP.ParamByName'BANDERA').SaveToStream(STREAM);
      stream.Seek(0,sofrombeginning);
      bitmap.LoadFromStream(stream);
      DBPaisBandera.Picture.Bitmap.Assign(bitmap);
      LabelPais.Caption := DM.SP.ParamByName('NOMBRE').AsString;
    finally
      DM.SP.UnPrepare;
       bitmap.Free;
       STREAM.Free;
    end;
end;


No se si te funcionara yo no utilizo estos componentes, pero la idea es pasarlo a un stream y luego cargarlo, no se si se podria pasar del bitmat i hacer load directamente al picture, pero mi codigo lo tengo asi y supongo que es porque sin el bitmap no me funcionaba

Saludos y suerte

Luis M. 10-07-2008 08:39:27

Hola.
Gracias por responder.
Ahora estoy en el trabajo, pero esta tarde, en cuando llegue a casa
lo pruebo y te comento.

Un saludo.

Luis M. 11-07-2008 11:24:46

Hola.
Pendón por la tardanza.
Al final no supe como hacerlo (novato que es uno).
Así que basándome en este hílo
pude solucionarlo.

Aquí dejo el código:
Código Delphi [-]
var
  Blob: TBlobField;
  jpg : TJpegImage;
begin
  Busca_Pais := TBusca_Pais.Create(Self);
  try
    cState := 'BUSCAR';
    Busca_Pais.ShowModal;
  finally
    FreeAndNil(Busca_Pais);
    if cCodigo <> '' then DBPais.Text := cCodigo;

    DM.QVarios.Close;
    DM.QVarios.SQL.Text := 'Select NOMBRE,IMAGEN From PAISES Where CODIGO = '+
                            QuotedStr(cCodigo);
    DM.QVarios.Open;

    Blob := DM.QVarios.FieldByName('IMAGEN') as TBlobField;
    jpg := TJpegImage.Create;
    jpg.Assign(Blob);
    DBPaisBandera.Picture.Graphic := jpg;
    LabelPais.Caption := DM.QVarios.FieldByName('NOMBRE').AsString;
    cCodigo := '';
    cState := '';
    FreeAndNil(jpg);
  end;

Un saludo y gracias.


La franja horaria es GMT +2. Ahora son las 18:08:59.

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