AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Meldung anzeigen wenn kein Bild in DB vorhanden
Thema durchsuchen
Ansicht
Themen-Optionen

Meldung anzeigen wenn kein Bild in DB vorhanden

Ein Thema von SvenT · begonnen am 18. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
SvenT

Registriert seit: 6. Aug 2003
50 Beiträge
 
Delphi 5 Enterprise
 
#1

Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 18. Aug 2003, 17:06
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 = 'FFthen begin
     bS.ReadBuffer(buffer, 1);
     hx:=IntToHex(buffer, 2);
     if hx = 'D8then Result := bS.Position - 2
     else if hx = 'FFthen
         bS.Position := bS.Position-1;
    end;
   end;
 finally
   bS.Free
 end;
end;
  Mit Zitat antworten Zitat
SvenT

Registriert seit: 6. Aug 2003
50 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 19. Aug 2003, 10:13
Moin!

Hat niemand eine Idee? Ich wäre für jede Hilfe dankbar.

Viele Grüße
Sven
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 19. Aug 2003, 10:16
Kannst Du nicht die Datenmenge über
Code:
IsEmpty
überprüfen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
SvenT

Registriert seit: 6. Aug 2003
50 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 19. Aug 2003, 10:59
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 19. Aug 2003, 11:12
Aha, IsNull heißt das bei Dir. Kenne Ado nicht. Nur Interbase. Da sieht man, daß manchmal sogar Querverweise gut sind.
Gruß
Hansa
  Mit Zitat antworten Zitat
SvenT

Registriert seit: 6. Aug 2003
50 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Meldung anzeigen wenn kein Bild in DB vorhanden

  Alt 19. Aug 2003, 11:49
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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