![]() |
ADOQuery SQL String
Guten Morgen,
wie kann ich mit der ADoQuery komponente eine SQL Abfrage gestalten die einen Wert von einem DBEdit mit einbezieht. Also ich hatte folgendes probiert, wobei ich mir schon fast gedacht hatte das das nicht geht:
SQL-Code:
Sodele, jetzt ist die Frage wie bau ich den Wert vom DBEdit da mit ein ^^
select * from t_tabelle where wert1 = DBEdit1.Text
order by wert2 Gruss Budda [edit=r_kerber]SQL-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: ADOQuery SQL String
moin moin.
:warn: wenn es geht erst immer die suchfunktion nutzen. ![]() hatte selbiges problem. müßte dein problem lösen. |
Re: ADOQuery SQL String
Deinem Post hab ich folgendes entnommen
SQL-Code:
Allerdings bekomm ich dann nen Fehler das der Spaltenname DBEdit1.Text usw. nicht bekannt wäre ^^
select * from t_tabelle where wert1 like "%'+DBEdit1.Text+'%"
order by wert2 |
Re: ADOQuery SQL String
Hallo Budda,
im Programm schreibst Du folgendes:
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('select * from t_tabelle where wert1 like ' + QuotedStr ('%' + DBEdit1.Text + '%'); ADOQuery1.SQL.Add ('order by wert2'); |
Re: ADOQuery SQL String
Ah wunderbar, danke euch das klappt wunderbar ;)
Für alle die die sich das noch raussuchen, da fehlte noch eine klammer
SQL-Code:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('select * from t_tabelle where wert1 like ' + QuotedStr ('%' + DBEdit1.Text + '%')); ADOQuery1.SQL.Add ('order by wert2'); |
Re: ADOQuery SQL String
Delphi-Quellcode:
der bezeichner "wert2" ist meines erachten ein wenig unglücklich gewählt. da "wert2" ein spaltenname sein sollte. z.b. name ...
adoquery1.sql.Close;
adoquery1.sql.Clear; adoquery1.sql.text := 'select * from tabelle1 where name like "%'+edsuch.text+'%" order by wert2'; adoquery1.open; hier ein bsp. um einen teilstring mittels "like" zu suchen.
Delphi-Quellcode:
ansonsten bei string-operationen "quotedstr" verwenden.
adoquery1.sql.text := 'select * from tabelle1 where name like "%'+edsuch.text+'%"'
|
Re: ADOQuery SQL String
Zitat:
|
Re: ADOQuery SQL String
alles klar. sehe du hast schon die lösung.
hat sich zeitlich überschnitten meine antwort. :angle2: |
Re: ADOQuery SQL String
Moin,
Also ich weiß nicht wie das mit ADOQueries abläuft da ich Direct oracle access benutze. Aber Problem mit in den SQLString reingebastelten Werten ist, dass der Server deinen SQL Code jedesmal neu parsen muss. 'WHERE WERT1 = ' + QuotedStr(Edit1.Text) Es ist deshalb fast immer besser Bind Variablen zu nehmen. 'WHERE WERT1 = :SearchVal' Die musst du dann vor dem ausführen noch zuweisen und das wars. Ich habe keine Ahnung von ADO, aber ich denke doch, dass es dort auch geht. 1. dein Code wird übersichtlicher, du kannst den SQLCode weiterbenutzen und brauchst nur den Wert der Bindvariable ändern 2. Wenn du die Abfrage ein 2. Mal stelltst hat der Server den Code schon vorkompiliert zur Verfügung Bei einer Oracle DB und vernünftigen Speichereinstellungen wird er sogar den Inhalt der Ursprungsmenge für eine Weile im Cache lassen, so dass nur noch darin gefiltert werden muss. Was vor allem bei komplexen/großen Abfragen einen ungeheuren Performancezuwachs bedeutet. Das müsste eigentlich bei jeder prof. DB der Fall sein. mfG Robert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 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 by Thomas Breitkreuz