Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Cargar fichero en base de datos (https://www.clubdelphi.com/foros/showthread.php?t=55888)

gesDelf 30-04-2008 12:07:45

Cargar fichero en base de datos
 
Hola,

Tengo que cojer un fichero y guardarlo en un campo BLOB sobre Oracle con Delphi.

Lo que quiero conseguir es:
- Tango una tabla A, con 2 campos 'identificador' (number) y 'fichero' (long raw / blob).
- El usuario me ha de poder indicar un fichero (u:\ruta\nombre.ext) y un identificador, y yo guardar ese fichero en la tabla A de la base de datos en la columna 'fichero' de la fila que el usuario me indica a través de 'identificador'

He buscado por Internet pero no hay manera de encontrar una explicación que me sirva. Utilizo Delphi 5. El fichero es una imagen, pero no quiero mostrarla por pantalla, sólo que se cargue el fichero en la base de datos (es decir, me gustaría saber como hacer una carga independiente del tipo de fichero).

Os agradecería muchísimo vuestra ayuda. Si encuentro algo por otro sitio os lo pondré aquí por si a alguien más le puede ayudar.

Saludos y gracias de antemano.

poliburro 30-04-2008 15:09:50

yo realizo ese tipo de operaciones pero con ADO. Que componentes de acceso utilizas?

gesDelf 30-04-2008 15:14:07

BDE (Data Access y Data Controls). Tengo el identificador en una tabla en pantalla:
TTable (2 columnas 'identificador', 'fichero') <- TDataSource <- TDBGrid (muestro 'identificador')

poliburro 30-04-2008 16:32:58

Amigo, BDE es una tecnología obsoleta, te recomiendo que cambies a ADO.

saludos

gesDelf 30-04-2008 16:38:16

Lo malo es que este es el método que se usa donde estoy, y no puedo ir cambiando tan alegremente la forma de hacer las cosas, y me iría bien hacerlo con estos elementos, aunque esté desfasado (uso Delphi 5, así que precisamente a la última no estamos).

gesDelf 30-04-2008 16:46:27

Bueno he conseguido ir por buen camino, despues de buscar, probar y mezclar lo que encuentro por un lado y otro.

Aquí os dejo el código
var
blob : TStream;
myFileStream : TStream;
begin
blob := tabla1.CreateBlobStream(tabla1.FieldByName('FICHERO'), bmWrite);
blob.Seek(0, soFromBeginning);
myFileStream := TFileStream.Create ('C:\Fichero.ext', fmShareDenyWrite);
blob.CopyFrom(myFileStream, myFileStream.Size);
blob.Free;
myFileStream.Free;
tbImgEmp.ApplyUpdates;

end;

Con esto he conseguido lo que pretendía, eso sí, hay que asegurarse que estemos editando el registro sobre el que queremos modificar, ya que si no saltará error advirtiéndonos que no está en modo Edicion o Inserción.

Si encuentro mejoras para esta solución os la iré posteando.

Saludos.

nelson20_06 02-05-2008 23:16:33

buen aporte grax:):):):)

eduarcol 02-05-2008 23:23:31

Cita:

Empezado por nelson20_06 (Mensaje 283987)
buen aporte grax:):):):)

a que estas jugando?, estas muy agradecido??? :rolleyes:

nelson20_06 02-05-2008 23:31:07

Este... Lo que dijO ! " gesDelf" ???


:S que estas mirando todos mis post ! ¬¬
Ademas soy uan persona de pocas palabras y muyu agradecida nada mas


Salu2 !!
que estes bien .... :p

egostar 02-05-2008 23:35:43

Cita:

Empezado por nelson20_06 (Mensaje 283992)
Este... Lo que dijO ! " gesDelf" ???


:S que estas mirando todos mis post ! ¬¬
Ademas soy uan persona de pocas palabras y muyu agradecida nada mas


Salu2 !!
que estes bien .... :p

Bueno estimado nelson20_6

La cuestión es que al ver tus mensajes pensariamos que los posts podrían estar siendo a través de un sistema automatizado, ya que es la misma frase o muy cercana a ella, y si, efectivamente aquí en el foro se cuida mucho de este tipo de ataques.

Debo hacer notar que es agradable saber que hay gente agradecida por los hilos.

Salud OS

cHackAll 02-05-2008 23:57:37

Cita:

Empezado por nelson20_06 (Mensaje 283992)
Este... Lo que dijO ! " gesDelf" ???


:S que estas mirando todos mis post ! ¬¬
Ademas soy uan persona de pocas palabras y muyu agradecida nada mas


Salu2 !!
que estes bien .... :p

No egostar, la idea de un BOT se me va de la mente al ver que los posts no son constantes como el anteriormente citado, pero yo le pregunto a "nelson"; dices estar agradecido, dime qué estas agradeciendo en éste post? o es que acaso decir "no se la verdad pero buena pregunta" es algún aporte que valga la pena?

No creo que sea un lugar en el que una burla sea bienvenida, y si vas a postear que no sea solo por hacerlo, para eso tenemos la Taberna.

Por favor lee nuestra guia de estilos.

Adios :mad:


La franja horaria es GMT +2. Ahora son las 17:04:16.

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