Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Meldung anzeigen wenn kein Bild in DB vorhanden (https://www.delphipraxis.net/7662-meldung-anzeigen-wenn-kein-bild-db-vorhanden.html)

SvenT 18. Aug 2003 16:06


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;

SvenT 19. Aug 2003 09:13

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

Hansa 19. Aug 2003 09:16

Re: Meldung anzeigen wenn kein Bild in DB vorhanden
 
Kannst Du nicht die Datenmenge über
Code:
IsEmpty
überprüfen ?

SvenT 19. Aug 2003 09:59

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:
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);
Grüße Sven

Hansa 19. Aug 2003 10:12

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:

SvenT 19. Aug 2003 10:49

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 08:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz