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 cualquier tipo de archivo en un campo en sql server (https://www.clubdelphi.com/foros/showthread.php?t=48396)

zafmanjp 24-09-2007 15:03:36

Guardar cualquier tipo de archivo en un campo en sql server
 
Hola amigos, necesito hacer un pequeño programita que lea y guarde cualquier tipo de archivo en un campo de una tabla en Sql Server

He leido algo de stream y eso pero no me aclaro.

gracias

Neftali [Germán.Estévez] 25-09-2007 12:02:22

Utiliza parámetros.
En mi caso (utilizando sentencias SQL) en alguna ocasión he utilizado esto:

Código Delphi [-]
  ADOQuery1.SQL.Text := 'INSERT Tabla (Fichero) VALUES (:fichero)';
  ADOQuery1.Parameters[0].LoadFromFile(Edit1.Text, ftBlob);
  ADOQuery1.ExecSQL;

Si defines el campo Fichero como Image, esto funciona perfectamente.

zafmanjp 26-09-2007 10:04:53

Guardar archivos
 
Gracias me ha servido de mucho.
Ahora me interesa recuperar cualquier archivo del campo de base de datos y previsualizarlo. Conoces alguna funcion, proc o xxx que te realice una imgen del contenido de un archivo, bien sea excel, .doc, txt etc.

De esta manera podria guardar la imagen en la base de datos e ir mostrando el contenido del archivo segun navegamos por el recordset.

Gracias de antemano.

Neftali [Germán.Estévez] 26-09-2007 11:05:11

Puedes usar algo similar a esto:


Código:

var
File1:TStream;
...
File1 := S.DataSet.CreateBlobStream(S.DataSet.FieldByName('Fichero'), bmread);
try
File1.Seek(0, 0);
FS := TFileStream.Create(FileName, fmCreate);
// Bloque de proteccion para liberar
try
// Copiar el contenido
FS.CopyFrom(File1, File1.Size);
finally
FS.Free;
end;
finally
File1.Free;
end;


zafmanjp 29-09-2007 20:33:05

Gracias
 
Muchas gracias de nuevo por tu ayuda. Me ha servido mucho.

Leviatan 19-12-2007 18:23:54

Hola Neftalí:

Yo también estoy interesado en hacer algo parecido a lo que preguntó zafmanjp.

La inserción funciona correctamente. Lo que no me queda claro es la parte de la lectura del archivo: ¿dónde declaras las variables "S" y "FS" y de qué tipos son?

Además, una vez que recupero el archivo ¿cómo hago para abrirlo con la aplicación adecuada? Ej.: .doc = Word, .xls = Excel.

Gracias.

Neftali [Germán.Estévez] 20-12-2007 09:56:54

En la parte privada o pública de tu formulario.

FS es de tipo TFileStream y la S es una Tabla o un Query, dependiendo de lo que uses para acceder a la tabla.

Leviatan 21-12-2007 18:34:52

Disculpen la ignoracia, pero ¿dónde se declara la variable "FileName"? Además, lo que me falta es poder leer el archivo desde la base de datos y mostrarlo en la aplicación correcta, por ej. si es un archivo .doc abrirlo con Word.

Gracias una vez más.


La franja horaria es GMT +2. Ahora son las 08:00: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