Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   SQL Server - Grabar / Recuperar Imagen (https://www.clubdelphi.com/foros/showthread.php?t=62055)

_Willa 02-12-2008 18:01:59

SQL Server - Grabar / Recuperar Imagen
 
Hola,

Estoy intentando recuperar una imagen guardada en un campo tipo "image" en Sql Server, no se si el tipo de campo es el correcto o usar el tipo
varbinary(MAX). El tipo de conexión utilizada es ADO.
Para el acceso a la SQL utilizo una llamada a un Procedimiento Almacenado
creado por mi

Despues de varios intentos, creo que esto funciona.
Código:


        Mi_Imagen->Picture->Graphic->SaveToStream(msImagen);
        unsigned int  sizeg=msImagen->Size;
        TMemoryStream *msImagen = new TMemoryStream;
        TADOStoredProc *comm = NULL;
        comm = ptSQLBasic->DefineStoredProc("sp_INSERT_Grafico");
TParameter *pe=comm->Parameters->CreateParameter("@Grafico",ftBlob,pdInput,0,"");
          pe->Parameters->ParamByName("@Grafico")->LoadFromStream(msImagen,ftBlob);
                        comm->ExecProc();

El procedimiento almacenado llamado es "sp_INSERT_Grafico"
Código:

ALTER PROCEDURE [dbo].[sp_INSERT_Grafico]
(
                @Grafico  varbinary(MAX)
)
AS BEGIN
  UPDATE tbl_Ficha SET FOTO=@Grafico
END

Pero la parte de la recuperacion de la imagen no funciona!!.
no se, de que forma se le puede asignar al TMemoryStream o al TImage para asignar la imagen recuperada.

alguna idea ? de como se puede recuperar la imagen, usando un proc. con cursor o con paso de parametros ?

javier7ar 17-12-2008 13:37:30

Haces un select del campo con una query y despues lo podes pasar asi a un TStream

Código Delphi [-]
TGraphicField(MiQuery.FieldByName('Imagen')).SaveToStream (MiStream);

despues ese TStream lo podes asignar a un TBitmap asi

Código Delphi [-]
MiBitmap.LoadFromStream(MiStream);

y por ultimo lo podes pasar a un TImage asi

Código Delphi [-]
MiImage.Picture.Assign(MiBitmap);

Alguno de esos te deberia servir para lo que queres
Saludos

P/D: ups! recien veo que el post es de hace dos semanas jeje


La franja horaria es GMT +2. Ahora son las 09:36:03.

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