FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Poner fotos en tablas planas
Hola
Mi tablas las hago en access, tengo que una lista de nombres personas para ponerle una foto pequena de frente , asi cuando consulte una persona tenga al lado su foto. Pero no me imagino como hacerlo. Estaba buscando en este foro algo parecido, no he encontrado nada, tampoco en la red. Si encontre esto: "Si usas Ole en Acces como tipo de campo es un equivalente al BlobField, y Delphi lo tomará así, permitiendote no solo almacenar fotos, sino cualquier otro archivo. Cuando vincules tu tabla, o query a la tabla en acces, y hagas en el field Editor Add All fields, aparecerá un campo con el nombre que le diste al tipo Ole de tipo TBlobField en Delphi. Este campo tiene dos metodos importantes, LoadFromFile y SaveToFile, además LoadFromStream y SaveToStream, por si necesitas pasarlo a otro tipo de medios que no sea un archivo. Esto implica una modificación del campo, por consiguiente antes de hacer nombreDataSetNombreCampo.LoadFromFile('nombre archivo'); debes hacer nombreDataSet.Edit; o nombreDataSet.Insert; según sea el caso de estar dando de alta o modificando." es una respuesta que le dan a alguien en otro foro, pero no enendi nada. Si podrian darme un ejemplo. Saludos. |
#2
|
||||
|
||||
Siguiendo la ayuda que encontraste tendrías que hacer algo como esto:
1. En tu tabla access, el campo que quieras para almacenar la foto debe ser de tipo "Object OLE" 2. En tu aplicación, enlaza un componente ADOTable (o Table o el que uses) a tu tabla access. 3. En ese componente entra al editor de campos (doble clic sobre el componente) y agrega todos los campos (menú contextual|Add all fields). 4. Uno de estos campos corresponde al de la foto, se llamará algo así como ADOTable1Foto suponiendo que el campo de tu tabla access se llama foto. Este campo, en el inspector de objetos podrás ver que es de tipo TBlobField. 5. Para poner datos en un camp BlobField usas su método LoadFromStream o LoadFromFile. 6. Para recuperar los datos de un campo BlobField usas su método SaveToStream o SaveToFile. -------------- Ahora bien, analicemos cómo agregar una imagen y como recuperar una imagen. Agregar una imagen Aquí debes decidir si tomas la imagen desde un archivo en disco o si ya la tienes en un componente TImage en tu aplicación. Si es lo primero, entonces puedes usar el método LoadFromFile del BlobField (lee arriba). Pero si es lo segundo, deberás usar un objeto Stream como intermediario:
Aquí estoy suponiendo que ya tienes preparado el registro donde poner la foto. Es decir, si es para un registro nuevo:
Y si era un registro ya existente:
una vez que te hayas colocado en el registro deseado. Ya que tengas esto, procedes como ya sabes. Llenas los otros campos y ejecutas el método Post del ADOTable. Recuperar una imagen Para el paso inverso, mostrar en un componente Image, la imagen del registro actual, también necesitas un Stream de intermediario:
Espero que te haya quedado más claro, si no, consulta otra vez, pero dedícale un tiempo a intentar entender. He puesto el código como lo fui pensando, sin probar; así que es posible que haya uno que otro error. // Saludos |
#3
|
|||
|
|||
Hola Roman.
Gracias por tu interés en ayudarme. Hay parte del asunto que si entiendo y otras no, por ejemplo que el campo es de tipo object OLE eso lo entiendo, y otras cosas más, pero no entiendo a donde se escribe el código que me pasaste ese que sirve para agregar imagen desde un archivo y/o donde se escribe el código para recuperar imagen cuando se hace la consulta. Por ejemplo cuando consulto el empleado Antonino, en un recuadro debe de salir la foto de ese empleado; Cuando ingreso un empleado Manuel, ¿Cómo ingreso su foto? Esas son las cosas que me tienen enredado. Estoy tratando de entender. Saludos. |
#4
|
||||
|
||||
Pues esto depende mucho de cómo quieras manejarlo tú, es decir, de cómo manejas en general el resto de los datos.
Por ejemplo, vamos a suponer que muestras tus registros en un DBGrid. Normalmente no querrás poner un columna con las fotos de los empleados. Se puede hacer pero puede generar un tráfico de datos innecesario. Pero puedes colocar un componente Image a un lado del DBGrid en donde muestres la foto del empleado actualmente seleccionado. En este caso, el código para cargar la foro podrías ponerlo en el evento AfterScroll del DataSet que está enlazado al DBGrid. Pero también podrías optar por abrir un formulario aparte con los detalles del empleado seleccionado. Esto es muy frecuente; en el DBGrid pones sólo los campos mínimos necesarios para que un usuario reconozca el registro y mediante un botón o acción similar mandas abrir un formulario con controles de datos (DBEdits, etc.) enlazados el mismo DataSet que el DBgrid para mostrar los detalles del registro actual. En ese formulario pondrías tu componente Image y, por ejemplo, podrías usar su evento OnShow para poner el código de carga de la foto. En el caso inverso, el de agregar un empleado, sus datos y su foto, podrías usar también el formulario de detalles luego de insertar un registro en blanco. Junto a tu Image puedes tener un botón en cuyo evento OnClick cargas la imagen en el Image mediante Image.LoadFromFile. Puedes ahí mismo traspasar la imagen al campo BlobField con el código que te he puesto antes o usar directamente el método LoadFromFile del BlobField. // Saludos |
#5
|
||||
|
||||
Hola
Sigue este ejemplo: Coloca en un form: 2 botones 1 image 1 dbnavigator 1 adotable y su adoconnection Ahora coloca este código donde corresponde (ya de estas cosas sabes). Este código es gracias a mi amigo cHackAll Saludos
__________________
Siempre Novato |
#7
|
||||
|
||||
Te pongo un ejemplo completo. El ejemplo incluye una base de datos de access 2003 extraida de la tabla biolife que viene con Delphi. Este ejemplo lo tenía ya por aquí en el foro para mostar un dbnavigator personalizado pero lo adapté a ADO y Access.
Los dos botones de la derecha no pertenecen al Navigator y son para cargar una imagen o borrar la imagen del registro seleccionado. En el ejemplo incluyo las imagenes jpg en la subcarpeta fish. De entrada, ningun registro tiene imagen. Ahora bien, es posible, pero no estoy seguro, que si tus imágenes son bitmaps en lugar de jpg, puedas usar directamente un componente DBImage directamente sin pasar por todo el rollo de los streams. Agrego En el ejemplo se me quedó un componente Table del BDE del ejemplo anterior. No hagas caso de él, lo puedes suprimir. // Saludos |
#8
|
||||
|
||||
Hola
No entiendo. Lo estoy viendo pero no quiero meter las patas. Tienes componentes ado, sin embargo veo Zeos. Quito las referencias sin problema?. Saludos
__________________
Siempre Novato |
#9
|
||||
|
||||
Hola
Ya le quite algunas referencias y funciono. Esta muy bien el programa, interesante el codigo. Saludos
__________________
Siempre Novato |
#10
|
||||
|
||||
Ja, ja, perdón. Recién noto que la versión a partir de la cual hice el ejemplo no es la del que está en los foros sino una en la que había comenzado a adaptarlo a Zeos y nunca lo terminé. Gracias por la observación, espero mañana limpiarla y recolocarla aquí.
// Saludos |
#11
|
||||
|
||||
Ya lo pulí y le añadí algunos comentarios.
// Saludos |
#12
|
|||
|
|||
Hola,
No crean que he abandonado este hilo, lo que pasa es que no he tenido la oportunidad para comenzar a estudiar la forma de colocar fotos en mi BD, con las orientaciones de ustedes. Les digo que he es estado fuera y desconectado, en asuntos de trabajo, hoy comienzo a probar, no se me alejen que pronto sigo preguntando. Hay algo Roman, no se de que hablas de que puliste y agregaste comentarios y lo de Caral que le quitó algunas referencias. No se de que estaban hablando..... Saludos. |
#13
|
||||
|
||||
Me refiero al ejemplo que puse en el mensaje #7. Como lo hice a partir de otro ejemplo, tenía cosas que sobraban y que es lo que Caral quitó.
// Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Seguridad de tablas planas | pmtzg | Tablas planas | 1 | 01-04-2009 08:55:41 |
Cansado de tablas planas... | Jheysson13 | Conexión con bases de datos | 10 | 23-06-2008 15:03:21 |
Consejo sobre tablas planas | pablonill | Tablas planas | 2 | 12-12-2006 00:08:18 |
Tablas planas. | REHome | Tablas planas | 1 | 10-11-2005 21:18:31 |
backup en tablas planas | soloriv | Tablas planas | 0 | 25-03-2005 14:39:54 |
|