![]() |
Meldung anzeigen wenn kein Bild in DB vorhanden
Hallo!
Ich greife mit Hilfe von ADO auf eine MS Access DB zu. In dieser DB sind auch Bilder abgelegt. Ich kann mir die Bilder anzeigen lassen und auch welche abspeichern. Wenn allerdings für den aktuellen Datensatz kein Bild vorhanden ist, soll eine Meldung mit dem Hinweis das kein Bild vorhanden ist herscheinen. Ich habe das Problem versucht mit den beiden unten stehenden Methoden zu lösen. Es erscheint aber eine Stream-Read-Fehlermeldung wenn kein Bild vorhanden ist. Der except-Fall wird in der Procedure also nicht durchlaufen. Hat jemand eine Idee? Grüße Sven
Delphi-Quellcode:
procedure TForm_Hauptformular.But_Foto_anzeigenClick(Sender: TObject);
var bS : TADOBlobStream; Pic : TJpegImage; begin bS := TADOBlobStream.Create(DM.Ado_T_SpielplaetzeFoto, bmRead); try try bS.Seek(JpegStartsInBlob(DM.Ado_T_SpielplaetzeFoto), soFromBeginning); Pic:=TJpegImage.Create; try Pic.LoadFromStream(bS); ADOImage.Picture.Graphic:=Pic; finally Pic.Free; end; finally bS.Free end; except on EStreamError do MessageDlg('Für diesen Datensatz ist kein Foto vorhanden!', mtInformation, [mbOK], 0); end; end; function TForm_Hauptformular.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; end; finally bS.Free end; end; |
Re: Meldung anzeigen wenn kein Bild in DB vorhanden
Moin!
Hat niemand eine Idee? Ich wäre für jede Hilfe dankbar. Viele Grüße Sven |
Re: Meldung anzeigen wenn kein Bild in DB vorhanden
Kannst Du nicht die Datenmenge über
Code:
überprüfen ?
IsEmpty
|
Re: Meldung anzeigen wenn kein Bild in DB vorhanden
Hallo Hansa!
Danke für den Tip. Mit IsEmpty hat es zwar nicht geklappt, aber mit IsNull.
Delphi-Quellcode:
Grüße Sven
if DM.Ado_T_SpielplaetzeFoto.IsNull = false then begin
Pic.LoadFromStream(bS); ADOImage.Picture.Graphic:=Pic; end else MessageDlg('Für diesen Datensatz ist kein Foto vorhanden!', mtInformation, [mbOK], 0); |
Re: Meldung anzeigen wenn kein Bild in DB vorhanden
Aha, IsNull heißt das bei Dir. Kenne Ado nicht. Nur Interbase. Da sieht man, daß manchmal sogar Querverweise gut sind. :mrgreen:
|
Re: Meldung anzeigen wenn kein Bild in DB vorhanden
Mit IsEmpty konnte ich nicht auf die Spalte "Foto" in meiner Tabelle zugreifen, sondern nur auf die Tabelle. Mit IsNull hat es wie gesagt geklappt. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz