PDA

Ver la Versión Completa : Guardar cualquier tipo de archivo en un campo en sql server


zafmanjp
24-09-2007, 15:03:36
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:


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
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:


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
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.