![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: Delphi2009 + FibPlus
FibPlus Dataset.Locate lügt
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:
Ich verstehe nicht, weshalb die Variable FUND auf TRUE gesetzt wird, obwohl der gesuchte Eintrag gar nicht vorhanden ist.
{******************************************************************************************************************
*** 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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