Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Grabar Imagen en Tabla Access (https://www.clubdelphi.com/foros/showthread.php?t=48460)

novato03 25-09-2007 20:02:57

Grabar Imagen en Tabla Access
 
Hola amigos del clubdelphi, se que este tema se ha tratado mucho en los foros pero el asunto es que no he trabajado con imagenes en una base de datos, y buscando encontré el siguiente código:

Código Delphi [-]
if openpicturedialog1.execute then
dbimage1.picture.loadfromfile(openpicturdialog1.filename);

Al ejecutarlo me invoca la ventana de dónde voy a buscar la imagen, el asunto es que cuando la cargo no se ve en el DBImage, acaso me falta algo?
por cierto DBImage esta conectado con el respectivo campo "Logo", utilizo Delphi-7 y Access 2003.

Gracias de antemano...

rodrigodeoz 25-09-2007 20:16:09

es mejor que en la BD solo guardes la direccion de la imagen y utilices un componente Image para mostrarla y ya asi es menos problematico y se hace mucho mas lijera tu BD. si necesitas ayuda con eso avisame...:)

novato03 25-09-2007 20:55:41

Asunto
 
Lo cierto es que no sé como cargarla ni grabarla en la tabla, osea que se pueda ver y consultar...:confused:

rodrigodeoz 25-09-2007 21:19:06

primero agregas un OpenPictureDialog1, un Imge1, un edit y boton;
en el boton le agregas este codigo:

Código Delphi [-]
 
if (OpenPictureDialog1.Execute) then begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
edit1.Text:=openpicturedialog1.FileName;
end;
esto es para buscar y mostrar la imagen.
para guardarla solo guardas el texto que te parece en el edit1 y para mostrar la imagen desde una consulta te dare un ejemplo:


image1.Picture.LoadFromFile(query1.field[0].value);

suponiendo que la consulta solo la haces para seleccionar la imagen

o desde un DBGRID
image1.Picture.LoadFromFile(dbgrid1.Fields[6].asstring);

su poniendo que en la posisicion 6 del grid esta la direccion de la imagen
este codigo para el grid se lopones en el onclick o en le DblClick

Fumaxclamp 25-09-2007 22:49:27

mira lo que te dice rodrigodeoz en gran parte es cierto, al gbrabar una imagen en tu base de datos con muchos registros esta se puede hacer lenta, sin embargo haveces es nesesario y por ende posible, existen varios metodos aqui en el foro, pero para que no te quieres la cabeza en descubirlos yo te aconsejaria que descargaras y utilizaras el componente imdbjpeg, es como el DBImage solo que este si acepta las imajenes jpg asi com las bmp y aparte agrega la libreria jpeg en los uses y con esto se resolvera tu problema.

suerte

novato03 26-09-2007 05:40:48

Gracias
 
Muchas gracias amigo Rodrigodeoz, ahora si que pude cargar la imagen...:)

casacham 30-09-2007 16:29:37

Siempre mas de lo mismo
 
Hola Novato, lo tuyo es mas simple de lo que parece. El tema fue architratado en el foro, solo es cuestion de que busques y el hehco de buscar te va a llevar a ver cosas que ni esperabas encontrando asi muchas nuevas ideas. Por eso buscar ante todo es lo fundamental. Por otro lado, que pasa si se borra la imagen, tenemos la direccion pero falta el archivo. Ademas ese sistema no te permite administrar las imagenes. Tambien es cierto que en una base de datos no vas a cargar imagenes porque se torna muy lenta. El punto de equilibrio esta en controlar cuanto pesa la imagen que agregas a tu base de datos. Hay muchos metodos para recortar los bytes de una imagen sin perder demasiada calidad. Para empezar lee este articulo aqui abajo, siempre lo he dicho, el boletin pascal n° 11 ofrece muchas soluciones. Te adelanto que estoy trabajando en un objeto que denominare TADODBImage y te permitira trabajar como cualquier Data_Aware control sin tener que escribir todo ese codigo cada vez que quieras utilizar graficos en la base de datos. Lee ese articulo y despues comenta que te parecio en este mismo hilo.

http://www.latiumsoftware.com/es/pascal/0011.php

waly2k1 02-10-2007 23:49:02

El metodo mas corto...
 
Código:


( Tabla.FindField( 'IMAGEN' ) As TBlobField).SaveToFile( sFile );

Tabla como lo dice es el nombre de un objeto TTable, Imagen es el nombre del campo y sFile es el nombre del archivo a almacenar. El objeto TTable debe estar en edicion...

Saludos


La franja horaria es GMT +2. Ahora son las 09:48:10.

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