Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2005
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 22
sercornejov Va por buen camino
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
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #2  
Antiguo 15-02-2005
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
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;
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #3  
Antiguo 15-02-2005
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 22
sercornejov Va por buen camino
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:
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:27:46.


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
Copyright 1996-2007 Club Delphi