Ver Mensaje Individual
  #19  
Antiguo 28-03-2011
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Reputación: 21
rrf Va por buen camino
Cita:
Empezado por bulc Ver Mensaje
He probado con tu código. Se atasca en la línea: DSetBlobImag.SaveToStream(MS1); el DSetBlobImag no está predefinido.
JP
Hola Bulc.

Mira, en esa parte del código (DSetBlobImag.SaveToStream(MS1) ), "Dset" es el nombre del componente IBDataset, "BlobImag" es el nombre del campo blob que guardará la imagen.

¿Por qué están juntos y de donde salen?. Bueno, creo que se les llama campos virtuales o algo así.

Pero lo importante es saber como se crean, pues son muy útiles.

Me voy a apoyar en el manual que te mencioné en un mensaje anterior. Acabo de darme cuenta de que ese manual lo explica casi todo, pero creo que se olvida de este detalle tonto, que raramente aparece en algún manual para novatos.

0- Tienes que tener la BD creada. También la tabla en la que se encontrará el campo blob que guardará la imagen.

1- Firebird debe estar funcionando.

2- Tienes que tener el componente TIBDataBase que debe estar conectado con la BD.

3- También un componente TIBTransaction, que estará conectado con el TIBDataBase.

3- Insertas un componente TIBDataSet, lo conectas con el TIBDataBase y con el TIBTransaction. Luego, en la propiedad "SelectSQL" le escribes "Select * from Nombre_de_tu_tabla".

4- Haces doble clic sobre el componente TIBDataSet o haces clic sobre él con el botón derecho del ratón y selecciones "Fields editor...".
Aparece una ventana pequeña.
Sobre ella, haces clic con el botón derecho del ratón y clic sobre "Add all Fields".
Aparecerán los nombres de todos los campos que definiste en la tabla.
Puedes cerrar la ventana.
La lista con los nombres de todos los campos creados aparecen, en el Unit, en la sección "Type" y (para el campo blob) será algo parecido a esto:

Código Delphi [-]
  IBDataSet1Campo_IMAG: TBlobField;

A partir de ese momento, en el código de tu programa podrás comprobar que si escribes el nombre "IBDataSet1Campo_IMAG". le pones un punto al final y esperas 1 segundo, el CodeInsight se podrá en marcha y te ofrecerá las opciones disponibles, como por ejemplo: "IBDataSet1Campo_IMAG.loadfromstream"

Por supuesto, los nombres cambiarán en función de los que tú hayas definido.

Esto es un complemento del manual que ya te recomendé en otro mensaje

Cita:
Si te quieres iniciar con los componentes IBX, EN ESTA PÁGINA HAY MUCHOS MANUALES, aunque uno que te recomiendo por claro y sencillo es "Conexión a Firebird desde Delphi con componentes IBX" (en la página 9 las imágenes tienen un pequeño error: en el listbox de la derecha 'Update fields:' todos los campos deben estar seleccionados).
Debes seguir la guía de ese manual y añadirle lo comentado en este mensaje. Creo que, en la página 7, antes de empezar el apartado "Configurar las propiedades del IBDataSet" es cuando debería hacerse.

Ten en cuenta que ese manual no incluye lo necesario para campos blob; pero explica muy bien otros muchos detalles que te serán imprescindibles (con o sin campos blob).

Si me permites, te hago una sugerencia: sigue el manual paso a paso y, cuando lo hayas hecho todo y sepas hacerlo, empieza el proceso otra vez, pero añadiendo el campo blob. Luego podrás añadir el código que me decías que no te funcionaba, aunque posiblemente no te será necesario porque podrás usar los componentes TDBImage.

Creo que el manual utiliza una BD llamada "Employee.fdb" que está en una de las campetas que parten de la carpeta "examples", que a su vez parte de la carpeta en la que hayas instalado Firebird.

Espero que te sirva.

Saludos.
Responder Con Cita