Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankabfrage mit LIKE - Syntaxfehler (https://www.delphipraxis.net/41050-datenbankabfrage-mit-like-syntaxfehler.html)

Susanne 25. Feb 2005 07:55

Datenbank: Access • Zugriff über: ADO

Datenbankabfrage mit LIKE - Syntaxfehler
 
Habe ein Problem mit dem Zugriff auf eine Datenbank.

Ich rufe in meinem Programm diese Funktion auf und übergebe ihr verschiedene Informationen, die für die Suche in der Datenbank benötigt werden. Beim ersten Aufruf funktioniert auch alles hervorragend, aber beim zweiten kommt die Fehlermeldung:

Delphi-Quellcode:
Syntaxfehler. in Abfrageausdruck 'ssbuject LIKE '%123456%'
Select LID, LFLOW FROM tblxx where sSubject LIKE '%223344%'
Und das verstehe ich nicht, es kommt alles richtig in der Funktion an, also Barcode=223344 und nicht 123456. Der SQL-String hat auch den richtigen Wert (223344). Also warum?


Delphi-Quellcode:
procedure InfosAusDB(Barcode: String; DOCID: Integer; LogFile: String; Datum: String);
   var
      sBarCode, ArchivDate : String;
      iDocID, LID         : Integer;
      ClassID, LogFileN   : String;
      SQLQuery            : String;
   begin
      sBarCode:= Barcode;
      iDocID:= DOCID;
      LogFileN:= LogFile;
      ArchivDate:= Datum;
      SQLQuery:='Select LID, LFLOW from TBLxx where sSubject LIKE '+QuotedStr('%'+ sBarcode +'%');
      Form1.ADOQuery1.Close;
      Form1.ADOQuery1.SQL.Add(SQLQuery);
      Form1.ADOQuery1.Open;
      if Form1.ADOQuery1.RecordCount = 0 then
         begin
            Form1.ADOQuery2.Close;
            Form1.ADOQuery2.SQL.Add(SQLQuery);
            Form1.ADOQuery2.Open;
            if Form1.ADOQuery2.RecordCount = 0 then
                oLogFile.AppendString(' LogEintrag ', LogFileN)
            else
               begin
                  LID:= Form1.ADOQuery2.FieldValues['LID'];
                  ClassID:= Form1.ADOQuery2.FieldValues['LFLOW'];
                  if LID > 278 then
                     oLogFile.AppendString(' LogEintrag ',LogFileN);
               end;
            Form1.ADOQuery2.Close;
         end
      else
         begin
            LID:= Form1.ADOQuery1.FieldValues['LID'];
            ClassID:= Form1.ADOQuery1.FieldValues['LFLOW'];
            if LID > 278 then
               oLogFile.AppendString(' LogEintrag ',LogFileN);
         end;
      Form1.ADOQuery1.Close;
      SQLQuery:= '';
  end;

xman 25. Feb 2005 07:58

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
in access * anstatt % benutzen

Susanne 25. Feb 2005 07:59

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
nein, kommt der gleiche mist

und zwar beim Aufruf Form1.ADOQuery1.Open;

xman 25. Feb 2005 08:02

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
SQL-Code:
Select LID, LFLOW FROM tblxx where sSubject LIKE "*223344*"

so gehts definitiv

Marcel Gascoyne 25. Feb 2005 08:03

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
Der Fehler ist ganz simpel. Du fügt Deiner Query Komponente den SQL Code zu:

Delphi-Quellcode:
Form1.ADOQuery1.SQL.Add(SQLQuery);
Damit funktioniert der Aufruf ja auch. Beim nächsten Aufruf fügst Du wieder den SQL Code hinzu, nun stehen bereits zwei Anweisungen drinne. Mach es besser so:

Delphi-Quellcode:
Form1.ADOQuery1.SQL.Text := SQLQuery;
Gruß,
Marcel

Susanne 25. Feb 2005 08:07

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
Vielen Dank, das hat mir sehr weiter geholfen. Habe es nun so gemacht, weil er mit sql.text das auch nicht so wollte, aber das hat mich dann auf diese Idee gebracht und es funktioniert. Vielen, vielen Dank.

Delphi-Quellcode:
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add(SQLQuery);

Quake 25. Feb 2005 10:02

Re: Datenbankabfrage mit LIKE - Syntaxfehler
 
Dies sollte aber das gleiche sein wie Marcel schon geschrieben hat. Sollte dann also auch funktionieren.
Bei Access benötigt man aber die Anführungszeichen aber QuotedStr liefert nur die einfachen. Kann das auch die Ursache sein oder liege ich da falsch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 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