![]() |
Datenbank: MS-SQL • Version: Express • Zugriff über: ADO
Problem mit Where-Klausel in einfacher SQL-Abfrage
Hallo,
ich möchte eine simple Where-Abfrage in SQL machen:
Delphi-Quellcode:
Eigentlich kein Problem - aber es gibt mit dem User-Parameter ein Problem.
var Vorname, Nachname, User: string;
begin User := 'Hans'; ADOQuery1.Active := False; ADOQuery1.SQL.Clear; ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like "%' + User + '%" '; ADOQuery1.Open; ADOQuery1.Active := True; end; Ich bekomme jedesmal die Fehlermeldung, dass die Spalte 'Hans' nicht existiert. Irgendwie wird der Suchparameter 'User' als Spaltennamen interpretiert?? Führe ich dagegen eine Abrage auf einen Integer-Wert durch, z. B.
Delphi-Quellcode:
Bekomme ich eine korrekte Ausgabe..?
'SELECT * FROM T_User WHERE ID = 1';
Weiss jemand, woran das liegen könnte? cu Chris |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Verwende einfach Hochkommas
|
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
meinst Du so:
Delphi-Quellcode:
Das erkennt er wieder nur als Spaltennamen.
ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like " + User + " ';
Ich steh anscheinend gerade auf'm Schlauch...? cu Chris |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Selbst wenn ich den festen Stringwert reinschreibe, kommt der Fehler:
Delphi-Quellcode:
cu
ADOQuery1.SQL.Text := 'SELECT * FROM T_User WHERE Vorname = Hans';
Chris |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Hi!
Ich glaube, es war mehr sowas gemeint:
SQL-Code:
ADOQuery1.SQL.Text := 'SELECT * FROM T_User WHERE Vorname = ''Hans''';
Grüße, Frederic P.S. Bitte innerhalb von 24h Beiträge editieren, um neue Infos hinzuzufügen anstatt ein Doppelposting zu machen. |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
super, genau - jetzt funktionierts!!!
Immer diese gemeinen Anführungszeichen in den Strings... Vielen Dank!! |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Zitat:
|
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Zitat:
|
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Zitat:
Einfache Anführungszeichen verwendet man bei Stringliteralen:
SQL-Code:
Doppelte Anführungszeichen dienen dazu Bezeichner, also Feld- und Tabellennamen, so einzuschliesen:
... WHERE User='Hans'
SQL-Code:
In obiger Where-Bedingung werden also zwei Feldnamen gleichgesetzt.
...WHERE "User" = "Feld mit Leerzeichen"
Manche Datenbanken weichen von dieser SQL/92 (und neuer) - Syntax ab, was dazu führt, dass sich falsche Meinungen über die Verwendung von einfachen und doppelten Anführungszeichen hartnäckig halten. :evil: |
Re: Problem mit Where-Klausel in einfacher SQL-Abfrage
Sollte man da nicht besser mit Parametern arbeiten?
Delphi-Quellcode:
ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like :_Vorname';
ADOQuery1.ParamByName('_Vorname').AsString := 'Hans'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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