Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ¿Que tipo de imágenes soporta firebird? (https://www.clubdelphi.com/foros/showthread.php?t=36351)

Delphius 09-10-2006 16:30:43

¿Que tipo de imágenes soporta firebird?
 
Buenas foristas:

Como lo dice el título... que tipo de imágnes se pueden almacenar en firebird.... jpeg? bmp?....

Entre los documentos que tengo sobre firebird no he encontrado referencia al respecto....Si alguno de ustedes tiene un poco de material, como de los tipos para tontos, sobre firebird e imágenes le agradecería que me diera un enlace o una idea básica...

Gracias,

JXJ 09-10-2006 18:04:43

yo creo que todas, si se convierten a formato bin o en formato de texto.
no estoy seguro, que apenas voy a empezar a meter imagenes en mysql
y ya despues probare Firebird.

Casimiro Notevi 09-10-2006 21:22:08

Puedes almacenar TODOS los formatos, CUALQUIER tipo, no sólamente imágenes, sino cualquier tipo de archivo.
Para eso están los campos del tipo blob

Delphius 10-10-2006 13:27:55

Gracias por responder
 
Gracias por responder tan pronto!

Estoy más tranquilo al saber que Firebird cuenta on el tipo BLOB. Me surge una duda... ¿como haría para que se almacene la imagen? tendría que hacer algo como:
Código SQL [-]
insert ..... values(DirecionDelArchivoImagen)

Estoy apreniendo esto de Firebird.... mucho no lo he toqueteado.
Ahora me urge aprendenderlo, tengo una tesis que hacer sobre sistemas de reconocimiento de caras en imagenes....

Nuevamente gracias.

Delphius 13-10-2006 01:34:07

Hola foristas,

Disculpen la insistencia....pero ahora...me podrían indicar de como se procedería a almacenar una imagen en un campo BLOB?... la verdad es que estoy muy verde.... si tienen algún documento y/o refencia sobre imagenes y firebird... les agradecería...

Saludos,

fly 13-10-2006 02:00:16

Lo mejor que puedes hacer es guardar en la DB la ruta a la imagen y no guardar directamente la imagen; si la tesis no trata sobre el almacenamiento de datos sino sobre el reconocimiento de imágenes, no deberias liarte con temas que no dominas y centrarte en el resto.

Si aún así quieres, o necesitas, que las imágenes se guarden junto a los datos, creo que se debería hacer igual que con cualquier otro BLOB, yo lo que uso son parámetros.

Código Delphi [-]
var parametro : TParam; 
.......

 parametro:=dmq1.edit_q.Params.CreateParam(ftBlob,'nota_b',ptInput);
//                                             ^-----creeamos el parámetro de tipo Blob y como un valor de entrada

dmq1.edit_q.parambyname('nota_b').AsBlob:=Memo_notas.Text;
//                                                ^-----  pasamos el valor de componente al parámetro (EN TU CASO SERIA UN COMPNENTE TIPO imagen_jpg)

 Dmq1.Edit_Q.SQL.Text:=
    'UPDATE Clientes SET '+
    ' notas= :nota_b, '+  // la inserción mediante parámetro se realiza siempre así, poniendo dos puntos ( : ) precediendo al parámetro
    ' WHERE cod_cli=' 
.....

El ejemplo lo pille de un trozo de código que uso para insertar campos MEMO, pero debería ser igual para campos tipo IMAGEN

Saludos.

Delphius 13-10-2006 02:10:27

Gracias por responder...
 
Y si... las imagenes las debo almacenar en la base de datos...

Entiendo un poco a medias tu código.... que es el ¿dmq1? el ¿Edit_q es un querry?

Saludos, y gracias por ayudar...

fly 13-10-2006 04:31:34

Si no queda más remedio que incluir las imagenes en la DB vamos a ver si lo conseguimos ;).

Ya te digo que nunca lo he hecho, pero debería ser igual que cualquier otro dato.
Respecto al código acertaste, a ver si me explico mejor ahora:

DMQ1 es un Data Module (es igual que cualquier UNIT pero algo más específica) donde yo guardo todos mis compoentes relacionados con la DB (transacciones, querys, datasources... ) para tenerlas todas localizables y de facil acceso desde los diferentes Forms (aunque tambien tengo a veces componentes locales que solo uso en un form).

EDIT_Q es un componente TIBQuery (es el que uso por dejecto para cualquier sentencia SQL que no sea un SELECT)

No uso componentes DBE, FBIPlus ni similares, tan sólo los componetes básicos de Interbase, por lo tanto el código es algo como esto:

............... editado ...........
Al final mientras posteaba decidí cambiarlo, usando una imagen en vez de un MEMO como en el ejemplo anterior.

Código Delphi [-]
Procedure TMiform.GuardarDato; 
var parametro : TParam; // TParam se encuentra en DB.pas
begin

// primero creamos el prarámeto
parametro:=MiIBQuery.Params.CreateParam(ftBlob,'_parametro_blob',ptInput);

// ftBlob -> indico que queremos crear un parametro tipo Blob, existe un ftGraphic pero me da error al ejecutar la query  :!
//  ptInput -> indico que va a ser un parametro de entrada de datos
// '_parametro_blob' --> el nombre del parametro que vamos a crear (usa el que tu quieras)

// Cargamos los datos en el parámeto recien creado
 MiIBQuery.parambyname('_parametro_blob').LoadFromFile('c:\pru.bmp',ftBlob);

// Ponemos la sentencia SQL en la Query
MiIBQuery.SQL.TEXT:=
 'UPDATE configuracion SET'+
 ' logo_empresa= :_parametro_blob '+  // la inserción mediante parámetro se realiza siempre así, poniendo dos puntos ( : ) precediendo al parámetro
 ' WHERE codigo=1';

// ahora ejecutamos el SQL
MiIBQuery.close;
MiIBQuery.prepare;
MiIBQuery.execSQL;

// borramos el parámetro creado
MiTIBQuery.Params.Clear;

end;

He usado una imagen BMP porque no uso componentes para ver JPG, hice las pruebas con un DBImage para ver el resultado del campo blob.

Este código lo he probado y funciona, a ver si te sirve.

Saludos.

Delphius 13-10-2006 13:10:09

Gracias! Fly!
 
Gracias Fly!... tu explicación y tu segundo código lo entendí....

Ahorita estoy en el trabajo, pero ni bien llegue a casa lo pruebo. Muchísimas gracias por ofrecer tu ayuda.

En cuanto salía para mi trabajo... me pensé si el dm1 era un DataModule....
Si necesito alguna manito estaré posteando.

RONPABLO 13-10-2006 16:42:53

Duda sobre Archivos enviados por medio de firebird sin guardarlo en la BD
 
Hola cordial saludo, como tal he buscado (sin exito) si existe la posibilidad de usar firebird como un canal para enviar archivos desde el servidor a otros equipos.... en si lo que quiero es guardar la ruta de un archivo (audio, imagen, video, ejecutable, etc), y desde el mismo firebird cargar ese archivo que esta en disco duro (no lo quiero almacenado como un campo blob) y lo pueda manejar como otro dato de una consulta y que llegue a los demas clientes por medio de un DataSet y no como un archivo compartido en la red???

RONPABLO 13-10-2006 16:44:55

:o Huy se me chispoteo!!... algun moderador puede borrar este post que lo queira poner en un hilo independiente??

JXJ 13-10-2006 18:14:30

hacer eso RONPABLO, suena interesante

RONPABLO 13-10-2006 19:33:58

Si muy interesante, y que me quitaria uno que otro dolor de cabeza!
Pero no deberiamos hablar de eso en este hilo ya que lo puse por error (crei que le di nuevo Hilo y puse responder Hilo)... en si la pregunta y las respuestas a este tema que necesito deberian ir por aquí y esperar que un moderador me haga el favor de quitar el post de este hilo para que no redunde la información... nuevamente pido disculpas! :o


La franja horaria es GMT +2. Ahora son las 21:24:21.

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