![]() |
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:
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?
Syntaxfehler. in Abfrageausdruck 'ssbuject LIKE '%123456%'
Select LID, LFLOW FROM tblxx where sSubject LIKE '%223344%'
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; |
Re: Datenbankabfrage mit LIKE - Syntaxfehler
in access * anstatt % benutzen
|
Re: Datenbankabfrage mit LIKE - Syntaxfehler
nein, kommt der gleiche mist
und zwar beim Aufruf Form1.ADOQuery1.Open; |
Re: Datenbankabfrage mit LIKE - Syntaxfehler
SQL-Code:
Select LID, LFLOW FROM tblxx where sSubject LIKE "*223344*"
so gehts definitiv |
Re: Datenbankabfrage mit LIKE - Syntaxfehler
Der Fehler ist ganz simpel. Du fügt Deiner Query Komponente den SQL Code zu:
Delphi-Quellcode:
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:
Form1.ADOQuery1.SQL.Add(SQLQuery);
Delphi-Quellcode:
Gruß,
Form1.ADOQuery1.SQL.Text := SQLQuery;
Marcel |
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); |
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 14:09 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