AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FibPlus Dataset.Locate lügt
Thema durchsuchen
Ansicht
Themen-Optionen

FibPlus Dataset.Locate lügt

Ein Thema von Perlsau · begonnen am 10. Aug 2010
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

FibPlus Dataset.Locate lügt

  Alt 10. Aug 2010, 11:52
Datenbank: Firebird • Version: 2.1 • Zugriff über: Delphi2009 + FibPlus
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.

Geändert von mkinzler (10. Aug 2010 um 12:02 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  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 13:08 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