PDA

Ver la Versión Completa : Problemas con DBImage y access


Picard
26-01-2006, 22:40:55
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
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/Delphi/ADO/Northwind/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:


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 (http://delphi.about.com/od/database/l/aa030601a.htm) 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.

//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