Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 22
SnaKe Va por buen camino
Hola,


En este hilo encontrarás información para almacenar la imagen en la base de datos y luego recuperarla en un control TImage:

http://www.clubdelphi.com/foros/showthread.php?t=2450

Las pruebas las hice con bases de datos Paradox e Interbase pero debería valer para todos los tipos de base de datos.

Espero que te sirva.
Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos
Responder Con Cita
  #2  
Antiguo 08-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 22
SnaKe Va por buen camino
Hola,

A ver, ya he conseguido almacenar imágenes BMP en una base de datos Oracle y luego mostrarlas en un TImage.

Lo primero, el campo de la tabla de la base de datos no debe ser LONG sino que debe ser LONG RAW

Bien, el código para incorporar la imagen sería algo así e iria colocado en el click de un botón que he puesto para añadir la imagen:

Código Delphi [-]
if (OpenDialog1.Execute) then begin
  if (Table1.State <> dsBrowse) then
    Table1.Insert;
  Table1FOTO.LoadFromFile (OpenDialog1.FileName);
  Table1.Post;
end;
OpenDialog1 es un control dialogo de apertura de ficheros.
Table1 es un TTable conectado a la tabla.
Table1FOTO es el campo persistente asociado al campo de tipo LONG RAW

Y luego, para mostrarla en el evento OnAfterScroll del TTable (Table1) he puesto este codigo:
Código Delphi [-]
var
  B : TBitmap;
begin
  B := TBitmap.Create;
  B.Assign (Table1FOTO);
  Image1.Picture.Assign(B);
  B.Free;
end;
Image1 ya sabes lo que es ¿no?.

Esta última parte es posible que funcione simplemente así (ojo, esto no lo he probado):
Código Delphi [-]
begin
  Image1.Picture.Assign(Table1FOTO);
end;

Este codigo combinado con unos buenos try/except y algun control mas por si hubiese error... (paporsiacaso como dicen en mi pueblo) debería funcionarte correctamente.

Espero que te sirva.

Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos

Última edición por SnaKe fecha: 08-07-2005 a las 08:22:26.
Responder Con Cita
  #3  
Antiguo 08-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Funciono Perfectamente


Hola,

Quiero darte las gracias, lo que me enviaste funciona perfectamente
guarda la imagen y luego la puedo mostrar en el TImage. Pero quiero preguntarte porque es que no se puede usar LONG, ya que aqui todas las tablas tiene los campos imagenes de tipo long y no Long raw.

Muchas gracias,
Responder Con Cita
  #4  
Antiguo 11-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 22
SnaKe Va por buen camino
Hola,

Pues la verdad es que no lo se, si dices que en campos de tipo LONG teneis guardadas imágenes no se... yo no puedo... tampoco he trasteado demasiado con Oracle, solo lo suficiente...

Cuando creo el campo persistente sobre un campo de tipo LONG de Oracle la variable es del tipo: TMemoField para Delphi, con esto si le intentamos dar datos binarios (imagenes, sonidos, etc...) se almacena como texto con lo cual se pierde información.

En cambio si el tipo es LONG RAW el campo persistente se genera del tipo TBlobField para Delphi, entonces al darle información a esa varible ya lo hace correctamente.

Yo creo que es un poco como los campos de tipo MEMO y GRAPHIC de Paradox, en uno se almacenan Textos y en otros datos binarios, al menos el tratamiento que Delphi hace de ellos es ese.

Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos
Responder Con Cita
  #5  
Antiguo 14-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Hola Snake

Hola,

Snake tengo un gran problema y te voy a explicar, aqui hay una aplicación finaciera la cual maneja todo lo que es contabillidad, esta aplicacion tiene su base de datos en Oracle y los Campos de Foto son de tipo LONG. lo que sucede es que la aplicacion que estoy creando va a complementar funciones de uno de sus modulos que es el de los empleados, mi aplicación capturara la foto y la guardara en la base de datos y luego la mostrara cuando se busque un empleado.

el caso es que como ya hemos hablado yo puedo guardar la imagen en el campo LONG y la aplicacion fInaciera Muestra la imagen, pero con mi aplicacion no puedo mostrarla.

ya se que me dijiste que deberia Usar Campos de TIpo LONG ROW y yo hice unas pruebas con tablas que yo cree y funciono perfectamente, pero no puedo cambiar la estructura de estas tablas ne moe lo permiten, el caso es que Quiero saber si puedo desplegar esa imagen en un Timage en delphi con los campos de tipo LONG y muestrame si te es posible un Ejemplo....

Muchas Gracias,

Última edición por kavisch fecha: 14-07-2005 a las 15:53:31.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:05:31.


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
Copyright 1996-2007 Club Delphi