FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Se pueden almacenar imágenes en una BD en Access??
Estoy trabajando con Access (2003) y me gustaría saber si se pueden almacener imágenes y de ser posible cómo se hace...Estuve mirando un tipo de dato (El OLE Object) parece que ahí está la cosa pero no se me ocurre como utilizarlo.
Probe pasarle la dirección de una imagen y la adicionaba a la BD pero cuando accedí desde una aplicación y traté de cargar los datos en un DBImage me decia que eran incompatibles los tipos. Cualquier sugerencia al respecto la agradeceré /*Saludos*/
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#2
|
||||
|
||||
Sí se puede.
Aquí lo tienes explicado paso a paso. Leete el artículo completo. Explica varias formas de hacerlo y porque cada una de ellas es correcta o no. http://delphi.about.com/od/database/l/aa030601a.htm
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Gracias
Gracias Neftali veo que la solución estaba ante mis narices, para la próxima garantizo buscar bien antes de preguntar. Sin embargo ya he hecho todos los pasos y me da un error en tiempo de ejecución que no logro depurar por ningún lado. Este es el error: Stream read error. La aplicación no explota ni nada de eso tan solo muestra este error y ya. Echale un vistazo al código como me quedo, casi igual que el ejemplo que me dices...
.................... const JPEGstarts = 'FFD8'; BMPstarts = '424D'; //BM var Form1: TForm1; implementation uses jpeg; {$R *.dfm} procedure TForm1.btnShowImageClick(Sender: TObject); var bS : TADOBlobStream; Pic : TJpegImage; begin bS := TADOBlobStream.Create(AdoTable1Picture, bmRead); try bS.Seek(JpegStartsInBlob(AdoTable1Picture),soFromBeginning); Pic:=TJpegImage.Create; try Pic.LoadFromStream(bS); ADOImage.Picture.Graphic:=Pic; finally Pic.Free; end; finally bS.Free end; end; procedure TForm1.FormCreate(Sender: TObject); begin ADOTable1Picture.SaveToFile('BlobImage.dat'); end; function TForm1.JpegStartsInBlob(PicField: TBlobField): integer; var bS : TADOBlobStream; buffer : Word; hx : string; begin Result := -1; bS := TADOBlobStream.Create(PicField, bmRead); try while (Result = -1) and (bS.Position + 1 < bS.Size) do begin bS.ReadBuffer(buffer, 1); hx:=IntToHex(buffer, 2); if hx = 'FF' then begin bS.ReadBuffer(buffer, 1); hx:=IntToHex(buffer, 2); if hx = 'D8' then Result := bS.Position - 2 else if hx = 'FF' then bS.Position := bS.Position-1; end; //if end; //while finally bS.Free end; //try end; end.
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#4
|
||||
|
||||
Utiliza TAG´s en el código Delphi, verás como se vuelve más legible.
http://www.clubdelphi.com/foros/misc.php?do=bbcode Mira la diferencia (Delphi -entre corchetes- al empezar y /Delphi -entre corchetes- al acabar):
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
A mi me funciona perfectamente tu código.
He guardado añadido una imagen a la Base de Datos con el código que aparece al final de la página: http://delphi.about.com/library/code/ncaa030601a.htm Y luego la visualizo correctamente con el código que has puesto.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
||||
|
||||
OK, de todos modos revisaré todo otra vez, quizás el problema esté en la BD o en el formato de la imagen que he guardado quizás no sea compatible.
Muchas gracias /*oracle*/
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
|
|
|