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)
-   -   Guardar imagen en un campo Varbinary (https://www.clubdelphi.com/foros/showthread.php?t=83854)

Ledian_Fdez 06-08-2013 15:07:24

Guardar imagen en un campo Varbinary
 
Hola chicos, he estado buscando pero no hay manera entender y mucho menos que me salga lo que deseo.

Estoy haciendo una aplicación (Delphi 2010 y MSSQL Server) donde en el registro de los usuarios es obligatorio guardar su foto. Cree un campo llamado Foto de tipo Varbinary dentro de la tabla Usuario. Necesito guardar la foto dentro de la Base de datos y mostrarla según la opción.

me podrían ayudar al respecto.

mil gracias de antemano
le saludo
un delphino ...

Ledian_Fdez 07-08-2013 19:54:22

Problema con la sentencia
 
Intente con esta sentencia:

Código SQL [-]
update Prueba set Photo = (SELECT * FROM OPENROWSET( BULK N'C:\Fotos\Koala.jpg', SINGLE_BLOB) AS IMAGE)

Pero me da el siguiente error:
Msg 8152, Level 16, State 10, Line 1
String or binary data would be truncated.

Casimiro Notevi 07-08-2013 20:05:35

Mira los enlaces del final de esta página, por si te sirve alguno.

Ledian_Fdez 09-08-2013 18:29:05

imagen y campo Varbinary
 
Chicos no logro hacerlo, nunca me imagine que fuese tan complicado.

Cualquier ayuda se lo agradecería,
la mas mínima idea vendría muy bien.

Recuerdo que utilizo delphi 2010 y ms sql server 2008

movorack 09-08-2013 18:51:04

Mira esta serie de artículos que tratan el tema

Storing Images and BLOB files in SQL Server
Storing Images and BLOB files in SQL Server Part 2
Storing Images and BLOB files in SQL Server Part 3
Storing Images and BLOB files in SQL Server Part 4

movorack 09-08-2013 18:56:10

y aquí tratan el tema de como trabajar los blobs desde delphi: Saving and loading binary data to/from an MSSQL Image (Blob) field.

Ledian_Fdez 09-08-2013 20:12:45

Imagen y campo Varbinary
 
Hola chicos estoy desarrollando una aplicación en Delphi 2010 y como gestor de BD MSSql Server 2008 y llevo días intentando guardar fotos con el formato .jpg o .jpeg en un campo Varbinary(max), entre las búsquedas realizadas dentro y fuera de este foro encontré este código para extraer la


Código Delphi [-]
function TForm1.GetFieldToJPG(FieldName: String): TJPEGImage;
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  Result := TJPEGImage.Create;
  with ADOTable1 do
  begin
    try
      TBlobField(FieldByName(FieldName)).SaveToStream(Stream);
      Stream.Position := 0;
      if (Stream.Size > 0) then
        Result.LoadFromStream(Stream)
      else
        Result := nil;
    finally
      Stream.Free;
    end;
  end;
end;

y cargo la foto

Código Delphi [-]
Image1.Picture.Assign(GetFieldToJPG('Photo'));

Lo que no logro es crear una función para guardar la imagen en la base de datos en el campo Photo de tipo Varbinary(max).

alguien me pudiera ayudar,
gracias de antemano.

Casimiro Notevi 09-08-2013 20:44:17

No abras otro hilo para preguntar lo mismo, sigue en este, gracias.
(He unido ambos)

Ledian_Fdez 09-08-2013 21:14:08

error Incorrect syntax near ...
 
Código SQL [-]
CREATE PROCEDURE InsertaFoto

@id int

AS

INSERT INTO EmployeePhoto(idEmployeeid, Photo)
SELECT @id, * FROM OPENROWSET(BULK 'D:\mifoto.jpg', SINGLE_BLOB) as foto

GO

Este funciona de lo mejor, pero necesito pasar por parámetro el camino de la foto con su nombre para eso utilizo @Dir

Código SQL [-]
CREATE PROCEDURE InsertaFoto

@id int,
@Dir varchar(255) // ubicacion de la foto ej: 'D:\mifoto.jpg'

AS

INSERT INTO EmployeePhoto(idEmployeeid, Photo)
SELECT @id, * FROM OPENROWSET(BULK @Dir, SINGLE_BLOB) AS foto

GO

Me arroja el siguiente error:

Incorrect syntax near '@Dir'.

Casimiro Notevi 09-08-2013 22:37:26

Hola, he comentado antes que no abras nuevos hilos para el mismo tema, gracias.
La próxima vez serás sancionado.
Saludos.


La franja horaria es GMT +2. Ahora son las 13:00:12.

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