AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery SQL String

Ein Thema von Budda · begonnen am 17. Nov 2003 · letzter Beitrag vom 17. Nov 2003
Antwort Antwort
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#1

ADOQuery SQL String

  Alt 17. Nov 2003, 07:59
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:
select * from t_tabelle where wert1 = DBEdit1.Text
order by wert2
Sodele, jetzt ist die Frage wie bau ich den Wert vom DBEdit da mit ein ^^

Gruss
Budda

[edit=r_kerber]SQL-Tags gesetzt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#2

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:15
moin moin.



wenn es geht erst immer die suchfunktion nutzen.

http://www.delphipraxis.net/internal...519&highlight=

hatte selbiges problem. müßte dein problem lösen.
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#3

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:30
Deinem Post hab ich folgendes entnommen
SQL-Code:
select * from t_tabelle where wert1 like "%'+DBEdit1.Text+'%"
order by wert2
Allerdings bekomm ich dann nen Fehler das der Spaltenname DBEdit1.Text usw. nicht bekannt wäre ^^
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:41
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');
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#5

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:52
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');
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#6

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:53
Delphi-Quellcode:
adoquery1.sql.Close;
adoquery1.sql.Clear;
adoquery1.sql.text := 'select * from tabelle1 where name like "%'+edsuch.text+'%" order by wert2';
adoquery1.open;
der bezeichner "wert2" ist meines erachten ein wenig unglücklich gewählt. da "wert2" ein spaltenname sein sollte. z.b. name ...

hier ein bsp. um einen teilstring mittels "like" zu suchen.
adoquery1.sql.text := 'select * from tabelle1 where name like "%'+edsuch.text+'%"' ansonsten bei string-operationen "quotedstr" verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:54
Zitat von Budda:
Für alle die die sich das noch raussuchen, da fehlte noch eine klammer
So etwas passiert in der Hektik.
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#8

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 08:55
alles klar. sehe du hast schon die lösung.
hat sich zeitlich überschnitten meine antwort.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: ADOQuery SQL String

  Alt 17. Nov 2003, 09:46
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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