La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1481 - INSERTAR FOTOS EN UNA TABLA
Autor:  Rodolfo del Valle
Quiero empezar a desarrollar en delphi y he estado haciendo pruebas con paradox, y tengo la duda de como puedo insertar una foto en una tabla de paradox para hacer mas o menos una planilla de pagos con foto incluida.
gracias.

  Respuesta:  qDevelop2000 Solutions
Estimado amigo:

Las respuestas que te han dado, están cargadas de buenas intenciones, pero ninguna de ellas te soluciona el problema, ¿verdad?.
Es cierto que a veces puede ser "interesante" el almacenar la ruta de la imagen en la BD en vez de la imagen para ahorrar espacio, pero eso implica otros inconvenientes, y quizá es peor el remedio que la enfermedad.
Hay una manera de hacerlo tan sencilla como:

1- Supone que tienes una tabla .DB (le llamaremos "Config.db") con un campo tipo G(le llamaremos "logo").
2- En primer lugar, te aconsejo que al tamaño del campo "logo" le pongas "1", pues así descargas el *.DB almacenando todo el gráfico (99,9%) al archivo *.MDB.
(haz lo mismo con los campos de tipo M).
3- Lo único que debes hacer es escribir el código(lo hago con FieldByName pero puedes hacerlo directamente sobre el TField), p.e.:

....
if not DlgAbrir.Execute then Exit;
try
TbConfig.Edit;
TGraphicField(TbConfig.FieldByName("logo")).LoadFromFile(DlgAbrir.FileName);
TbConfig.Post;
except
TbConfig.Cancel;
<>
end;
....

siendo:

TbConfig -> la TTable apuntanto a "Config.db",
DlgAbrir -> un TOpenPictureDialog

Sencillo verdad, si tienes alguna duda intentaré aclarártela.
Espero haberte ayudado.

  Respuesta:  Mitotech
He observado las respuestas que te han dado alguns personas y estas no difieren de llamar a los archivos como una URL, es decir, hacer un link a la ubicación del archivo de imagen en el disco.

Sin embargo elproblema que esto genera es que las imagenes no están realmente almacenadas en la base de datos.

Uno de los metodos que he utulizado con campos BLOB y que me ha dado buenos resultados esescoger el nombre del archivo de imagen usando el componente TOpenFileDialog, cargalo en un componente TImagen usando el metodo LoadFromFile y usando la propiedad FileName del dialogo, una vez cargada y mostrada la imagen puedes asignarsela a un campo BLOB de la base de datos (ya sea paradox,ORACLE, INFORMIX, MSSQL u otra) usando el metodo assign del campo de base de datos que quieres te almacene la imagen.

Eso es todo.

Parece engorroso, pero no lo es tanto.
Si estas interesado te puedo hacer unos demos y enviarte el codigo fuente.

  Respuesta:  Anthony Ortuño Vasquez
Te cuento que eso el lo mas facil en este mundo lo unico que al no haber una BD barata he tenido que ingeniarmelas y la major manera que halle para hacer esto es dejando que es sistema operativo se encague lo que hice fue generar las fotografias en un formato que podia concatenar con una extencion de una imagen por ejem
Utilizaba como referencia del documento de Identidad de una persona en un(path) especifica es decir
cadena = "c:\fotos\"+CODIGO+".jpg"
Por ejem si el codigo es 457695 un a vez concatenado obtendras el path completo de la foto y lo unico que resta hacer es colocar esto el la propiedad que direcciona el path del objeto

AHora si el de una base solo recupera el campo de la tabla (osea el "codigo") y veras que si funciona
Te comento que yo utilice este metodo y tengo 5000 fotografias y funciona bien y no afecta en nada a la velocidad de actualizacion

Recorda una cosa Nada es imposible siempre ingeniatelas

Santa Cruz Bolivia
http://www.ucbsz.edu.bo

  Respuesta:  Antonio M. Estévez Lorenzo
Debes utilizar un campo de tipo Blob. En los programas de ejemplo que vienen con Delphi hay varios que te pueden ayudar.