![]() |
Datenbank: Interbase • Zugriff über: SQL - Abfrage
Problem mit SQL Abfrage
Hi Leute,
ich wie immer mal ein Problem:
SQL-Code:
Ich weiß einige werden mich gleich erschießen warum ich es nicht Params gemacht habe jedoch ist meine Frage wieso steigt die abfrgae aus wenn ich "(BENENNUNG2 = ' +QuotedStr(Bng2E.Text)"hinzufüge?? Ohne dies funktioniert sie einwand frei.
SQL.Text:='Select idteil,benennung,benennung2,klassifi From TTEIL where (IDTEIL = ' +QuotedStr(TeilenrE.Text) + ') OR (BENENNUNG = ' +QuotedStr(Bng1E.Text) + ') OR (BENENNUNG2 = ' +QuotedStr(Bng2E.Text) + ') AND ((KLASSIFI like ''R%'') OR (KLASSIFI like ''S%'')) ';
Um Hilfe wird dringends gebeten. |
Re: Problem mit SQL Abfrage
was heist aussteigen :?:
bekommst du eine exception bei der ausführung oder dauerts ewig :?: |
Re: Problem mit SQL Abfrage
Zitat:
|
Re: Problem mit SQL Abfrage
Aussteigen heißt das er mir alle Datensätze anzeigt obwohl ich nur nach nen bestimmten suche.
Wenn ich den Teil mit BENENNUNG2 weg lasse bei meiner Abfrage zeigt er mir genau das gesuchte an. Wieso passiert das kann ich keine zwei OR - Verknüpfungen in eine Abfrage nehmen?? Mfg Manu |
Re: Problem mit SQL Abfrage
Kann es sein, daß Du die OR's vor dem AND auch noch in Klammern einschließen mußt?
|
Re: Problem mit SQL Abfrage
Doch nur man sollte die Klammer richtig setzen sont sucht er nämlich z.b. garnichts wenn nämlich in Bng2E.Text nix drinsteht was genau das ergebniss bringt was du hast.
|
Re: Problem mit SQL Abfrage
und wie??
Delphi-Quellcode:
SQL.Text:='Select idteil,benennung,benennung2,klassifi From TTEIL where (IDTEIL = ' +QuotedStr(TeilenrE.Text) + ') OR (BENENNUNG = ' +QuotedStr(Bng1E.Text) + ') OR (BENENNUNG2 = ' +QuotedStr(Bng2E.Text)+ ') AND ((KLASSIFI like ''R%'') OR (KLASSIFI like ''S%'')) ';
Klammern sind doch richtig oder nicht?? Mfg Manu |
Re: Problem mit SQL Abfrage
Was genau willst denn erreichen?
So etwas (wie's jetzt aussieht) (IDTEIL = TeilenrE.Text) OR (BENENNUNG = Bng1E.Text) OR (BENENNUNG2 = Bng2E.Text) AND ((KLASSIFI like 'R%') OR (KLASSIFI like 'S%')) oder so etwas ((IDTEIL = TeilenrE.Text) OR (BENENNUNG = Bng1E.Text) OR (BENENNUNG2 = Bng2E.Text)) AND ((KLASSIFI like 'R%') OR (KLASSIFI like 'S%')) |
Re: Problem mit SQL Abfrage
Hallo!
Schau Dir das Beispiel vom r_kerber an. Zu beachten ist ,daß AND eine höhere Priorität hat. Deshalb immer schön Klammern setzen. |
Re: Problem mit SQL Abfrage
Nee, nich unbedingt Params, aber Format hilft da gewaltig, kuckst Du:
Delphi-Quellcode:
oder kuckst Du mit meinem insFormat (unter Freeware zu finden):
SQL.Text:=Format('Select idteil,benennung,benennung2,klassifi From TTEIL where (IDTEIL = %s ) OR (BENENNUNG = %s ) OR (BENENNUNG2 = %s ) AND ((KLASSIFI like ''R%'') OR (KLASSIFI like ''S%'')) ',
[QuotedStr(TeilenrE.Text), QuotedStr(Bng1E.Text), QuotedStr(Bng2E.Text)]);
Delphi-Quellcode:
Die QuotedStr() brauchst Du hier nicht mehr, weil die Formatzeichen in GROSS (%S anstatt %s) automatisch die QuotedStr() mit einbeziehen. Auf sowas kommt man, wenn man schreibfaul ist :mrgreen:
SQL.Text:=insFormat('Select idteil,benennung,benennung2,klassifi From TTEIL where (IDTEIL = %S ) OR (BENENNUNG = %S ) OR (BENENNUNG2 = %S ) AND ((KLASSIFI like %S ) OR (KLASSIFI like %S )) ',
[TeilenrE.Text, Bng1E.Text, Bng2E.Text, 'R%', 'S%']); So bleibt die Programmierung schön übersichtlich und kann sich entweder um die SQL-Syntax kümmern oder um die Parameter. cu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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