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)
-   -   Problemas con DBImage y access (https://www.clubdelphi.com/foros/showthread.php?t=29614)

Picard 26-01-2006 22:40:55

Problemas con DBImage y access
 
Tengo una DB Access xp y me ha ocurrido lo siguiente:
Esta DB esta formada por una serie de tablas que contienen diversos campos y en casi todas las tablas hay un campo "Imagen" Objeto OLE en el que he insertado unas imagenes .bmp. al intentar visualizar estas imagenes en un DBImage, tanto en bds2006 como en bcb6 como en Delphi 7 me da un error de compilacion "Bitmap is not valid image" si alguien se ha encontrado en el mismo caso o sabe como solucionarlo por favor echadme una mano
muchisimas gracias

>BuenzeuS< 27-01-2006 13:42:47

No es solo un BMP
 
Hola a todos... Este es mi primer post en su foro y supongo no sera el ultimo.

Aca te dejo un link donde encontraras informacion al respecto
http://www.efg2.com/Lab/Library/Delp...ind/index.html

Básicamente el problema radica en que el objeto que access guarda no es solo una imágen BMP sino que tmb contiene información adicional de el programa con el cual debe abrirlo.

En el html encontraras 2 métodos alternativos. Se que alguna vez lo hice pero ahora no tengo a mano el código si luego lo encuentro lo agrego al thread

Espero haberte ayudado

SaLuDoS

Edit: Ahora que lo mire tranqui... en los 2 códigos de ejemplos saltean los primeros 78 bytes del BLOB y eso se debe a que los BMP comienzan con 0x424d o sea BM. Los primeros 78 son la información que Access agrega. ^^

Capo 27-01-2006 15:42:23

Buenos dias.
Alguna vez pase por lo mismo y lo resolví utilizando un TImage, al mostrar el form que contenía el TImage, le enviaba esto:

Código Delphi [-]
MiForm.Image1.Picture.Bitmap.Assign(DataModule1.TablaAccess.FieldByName('IMAGEN'));
Espero te sirva de algo. Saludos. Dabeto:)

Delfino 27-01-2006 20:42:15

Este enlace puede ser de utilidad..

Picard 30-01-2006 09:21:15

Muchisimas gracias por vuestra ayuda,no he conseguido traducir correctamente el documento,no obstante creo haber hallado la solucion, ahora al insertar objecto en el campo hago lo siguiente:
insertar objeto /crear archivo desde /vincular seleccionado /elegir imagen a ver si asi consigo visualzar las mimagenes de mi db en bcb6

Jonnathan 30-01-2006 21:11:34

Hola Picard, hace tiempo me toco hacer varios programas con bases de datos en Access que tenían imágenes y se que es un dolor de cabeza porque la forma como guarda las imagenes Access dentro del campo es diferente a la forma como la leen los componentes de Delphi. Al final terminé haciendo un pequeño programita en Delphi para guardar las imágenes sin usar el Access.

Es simple y lo puedes hacer rápido colocando un control TImage, un DBImage, un TOpenPictureDialog, un TDBGrid (para saber en cual registro estas ubicado) y los usuales TTable y TDatasource.
Código Delphi [-]
//1.- Navegas en tu tabla con el DBGrid y pones el registro que te interesa en modo de edicion 
Table->Edit();
//2.- Usas el TOpenPictureDialog para navegar por el disco duro buscando la imagen 
OpenPictureDialog->Execute();
//3.- Cargas la imagen en el TImage con 
Image->LoadFromFile(OpenPictureDialog->FileName);
//4.- Asignas la imagen cargada en el TImage al DBImage mediante
DbImage->Field->Assign(Image->Picture->Bitmap);
//5.- Guardas tu registro 
Table->Post();
Advertencias: Guardar imágenes grandes en la base de datos afectará seriamente el rendimiento de la misma. Los archivos JPEG son comprimidos pero se guardarán descomprimidos en el campo Blob de la tabla.

Picard 31-01-2006 12:49:57

Muchas gracia jonnathan voy a probarlo


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

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