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)
-   -   Me trae de los pelos el PARAMETRO (https://www.clubdelphi.com/foros/showthread.php?t=18537)

sercornejov 15-02-2005 20:05:21

Me trae de los pelos el PARAMETRO
 
Hola. Yo y mis cosas...

D6, FB1.5, WXP Pro.

Tengo un procedimiento almacenado que me devuelve (con exito) 8 parámetros, entre estos un campo blob (una foto jgp de 5Kb). La cosa es que puedo manipular y aprovechar todos lso parámetros menos el de la foto, pue no se como, por ejemplo, colocarlo en un TImage para mostrarlo.

Si me expliqué?

Código:

CREATE PROCEDURE PR_VISEXISTE (
    VISCC VARCHAR(15))
RETURNS (
    VIS_ID INTEGER,
    VIS_CC VARCHAR(15),
    VIS_NOMBRE VARCHAR(60),
    VIS_ESTADO SMALLINT,
    VIS_ADENTRO SMALLINT,
    VIS_ULTVIS TIMESTAMP,
    VIS_ULTARE SMALLINT,
    VIS_ULTEMP INTEGER,
    VIS_FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    NOEXISTE SMALLINT)
AS
begin
  noexiste=1;

  select vis_id,vis_cc,vis_nombre,vis_estado,vis_adentro,vis_ultvis,vis_ultare,vis_ultemp,vis_foto
  from visitante
  where vis_cc=:viscc
  into :vis_id, :vis_cc, :vis_nombre,:vis_estado,:vis_adentro, :vis_ultvis, :vis_ultare, :vis_ultemp,:vis_foto;

  if (vis_id is null) then
    noexiste=0;

  suspend;
end

Ese el procedimiento.

para ejecutarlo y tomar los parámetros:

Código:

  dmppal1.fbproVisExiste.prepare; //dmppal1 es el DataModule
  dmppal1.fbproVisExiste.Params.Items[10].Value:=id;
  dmppal1.fbproVisExiste.ExecProc;
  dmppal1.fbproVisExiste.UnPrepare;

  existe:=dmppal1.fbproVisExiste.Params.Items[9].Value;
  visid:=dmppal1.fbproVisExiste.Params.Items[0].Value;
  nombre:=dmppal1.fbproVisExiste.Params.Items[2].Value;
  visEstado:=dmppal1.fbproVisExiste.Params.Items[3].Value;
  adentro:=dmppal1.fbproVisExiste.Params.Items[4].Value;
  ultimaVis:=dmppal1.fbproVisExiste.Params.Items[5].Value;
  area:=dmppal1.fbproVisExiste.Params.Items[6].Value;
  empleado:=dmppal1.fbproVisExiste.Params.Items[7].Value;

todos funcionan, pero no se como asignar (o a qué asignar) el parámetro 8 que es la foto.

Ayyuda.......................

Sergio

Paoti 15-02-2005 22:34:34

usa un TImage
 
mirate este link ahi se muestra como guardar un jpg

y como mostrarlo despues


http://www.clubdelphi.com/foros/showthread.php?t=12174

y esta es la forma como lo implemente en un query, en el evento afterscroll

Código Delphi [-]
procedure TFrmCapturaDocumentos.QDocumentosAfterScroll(DataSet: TDataSet);
var bs : TStream; jp : TJpegImage; buff: Word;
begin
 bs := QDocumentos.CreateBlobStream(QDocumentosImagen,bmRead);
try
bs.Seek(0,soFromBeginning);
if bs.Read(buff,2) > 0 then
begin
  bs.Seek(0, soFromBeginning);
  case buff of
  $4D42: myImg.Picture.Bitmap.LoadFromStream(bs);
  $0000: myImg.Picture.Icon.LoadFromStream(bs);
  $0001,$CDD7: myImg.Picture.Metafile.LoadFromStream(bs);
  $D8FF: begin
  jp := TJpegImage.Create;
  jp.LoadFromStream(bs);
  myImg.Picture.Assign(jp);
  FreeAndNil(jp);
  end
  else myImg.Picture := nil;
end;
end;
finally
FreeAndNil(bs);
end;
end;

sercornejov 15-02-2005 23:03:14

Gracias PAOTI por contestar.

La verdad para guardarlo y traerlo por medio de TQuery lo hago parecido y me funciona sin problemas.

Lo que pasa es que la tabla es bastante extensa, además tiende a crecer en 500 fotos diarias (y así lo hara, con decrementos estimados por lo menos surante un años. Calculo que al final del ejercicio de nuevos visitante debe haber en la base de datos 120.000 fotos distintas.

Debido al tamaño de la tabla, y a la cantidad de requerimientos al día (2000 visitas diarias entre visitantes existentes y nuevos), decidí hacer las consultas por medio de los procedimientos almacenados, pues es mucho mas rápido y genera menos carga de operaciones en el cliente.

Como dije antes, los SP se ejecutan muy bien, rapido. el problema es acceder al dato de foto (parametro vis_foto) y poder:

1. colocarlo en un Timagen si el clinte existe
2. poder hacer un UPDATE si se cambia la foto, la cual es capturada por una cámara webcam, enviada al portapapeles, convertida a JPG y luego colocada en el TImage, para de ahi pasarlo al campo...

luego: :confused: :confused: :confused: :( :( :confused: :confused: :(


La franja horaria es GMT +2. Ahora son las 12:43:53.

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