Hallo Delphi-Programmierer,
mir ist heute morgen etwas Seltsames widerfahren: In meiner Datenbank-Anwendung befindet sich eine Webbrowser-Komponente. Wenn der Anwender auf den entsprechenden Button klickt, soll die aktuelle
URL in der Datenbank (Firebird) gespeichert werden, falls sie noch nicht vorhanden ist.
Da die
URL im Format Widestring vorliegt, habe ich das entsprende Feld in der Datenbank als BLOB (Text) definiert. Nun findet aber ein mit FibDataset ausgeführtes Locate einen Datensatz, der gar nicht existiert, denn in der Tabelle "URLS" ist bislang nur eine von Hand eingetragene
URL, die nicht mit der aktuell zu speichernden übereinstimmt:
INDEXURLS als BIGINT
URL_WEB als BLOB (Subtpye=Text)
Delphi-Quellcode:
{******************************************************************************************************************
*** WEBBROWSER - BUTTON BOOKMARK SPEICHERN WURDE ANGEKLICKT ***
******************************************************************************************************************}
procedure TFormMain.Bit_WebBookmarkClick(Sender: TObject);
VAR
Index : LONGINT;
Name,
WebURL : Widestring;
Fund : BOOLEAN;
PROCEDURE GetIndexURL;
BEGIN
Index := DatMod.FIBset_URLs.FieldByName('
INDEXURLS').AsInteger;
END;
begin
WebURL := WebPDF.LocationURL;
Name := WebPDF.LocationName;
Fund := DatMod.FIBset_URLs.Locate('
URL_WEB', WebURL, []);
IF NOT Fund
THEN
BEGIN
DatMod.FIBset_URLs.Append;
DatMod.FIBset_URLs.FieldByName('
URL_WEB').AsWideString := WebURL;
DatMod.FIBset_URLs.Post;
GetIndexURL;
END ELSE
BEGIN
GetIndexURL;
IF NOT DatMod.FIBset_BM.Locate('
BM_URL',
Index,[])
THEN
BEGIN
DatMod.FIBset_BM.Append;
DatMod.FIBset_BM.FieldByName('
BM_DATUM').AsDateTime := Now;
DatMod.FIBset_BM.FieldByName('
BM_USER').AsInteger := UserNr;
DatMod.FIBset_BM.FieldByName('
BM_TEXT').AsWideString :=
Name;
DatMod.FIBset_BM.FieldByName('
BM_URL').AsInteger :=
Index;
DatMod.FIBset_BM.Post;
END ELSE ShowMessage('
Die aktuelle URL ist bereits eingetragen.');
END;
end;
Ich verstehe nicht, weshalb die Variable FUND auf TRUE gesetzt wird, obwohl der gesuchte Eintrag gar nicht vorhanden ist.