Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Unabhängige Sql Abfrage? (https://www.delphipraxis.net/105242-unabhaengige-sql-abfrage.html)

Overclocker 18. Dez 2007 15:30

Datenbank: SQL • Zugriff über: SQL-Query mit ADO Komponente

Unabhängige Sql Abfrage?
 
Hallo,

ich möchte ein kleines Programm schreiben, wo sich der User selbst aussuchen kann, welche Spalte er anzeigen lassen möchte.

Ich nutze dabei die ADO Query Komponenten und 5 Comboboxen wo der User max. 5 Spalten aussuchen kann.

Der Befehl

ADOQuery1.sql.add('select '+Combobox1.text+','+Combobox2.text+','+Combobox3. text .... usw.


ist ja noch relativ einfach, allerdings ist es ja blöd, wenn der User nur 2 Spalten angezeigt haben möchte (da die anderen 3 Comboboxen ja keinen Text enthalten stimmt der syntax nicht mehr).

Wie kann ich das nun am besten lösen, ohne 5 mal rießige IF schleifen zu machen:

z.b.

If combobox1.text <> '' then
if combobox2.text <> '' then
if combobox3.text <> '' then
...
if combobox5.text <> '' then

ADOQuery1.sql.add('select '+Combobox1.text+','+Combobox2.text+','+Combobox3. text .... usw.



Gibt es keine "bessere" und schönere Methode das ganze flexibler zu gestalten ohne 5 große IF "schleifenblöcke"???

Danke für die Hilfe :)

mkinzler 18. Dez 2007 15:33

Re: Unabhängige Sql Abfrage?
 
Schleife über Array der Referenzen oder [].FindComponent()[/i]

haentschman 18. Dez 2007 16:37

Re: Unabhängige Sql Abfrage?
 
Hallo...

hätte da noch eine Idee...

- alle möglichen Spalten in die Listen der ComboBoxen
- auswertung über case ComboBox.ItemIndex of
- ist ItemIndex => 0 fügst du dem SQL String die Spalte hinzu.
- ist ItemIndex -1 ist ComboBox leer und du fügst dem SQL String '' hinzu.

Nebeneffekt: der Nutzer kann sich im Prinzip auch die Reihenfolge der Spalten definieren..

...bis bald :roll:

Overclocker 18. Dez 2007 16:43

Re: Unabhängige Sql Abfrage?
 
ok das ist beides neuland für mich da muss ich mich jetzt erstmal reindenken und mir die einzelnen befehle genau anschauen wie diese funktionieren

schon mal danke :)

alzaimar 18. Dez 2007 16:51

Re: Unabhängige Sql Abfrage?
 
Es gibt doch in Delphi diese 'Dual List box "Datei->Neu->Ander->Formulare" (jedenfalls bei D6)

Also, links sind alle Felder der Tabelle in einer Listbox. Rechts die ausgewählten.

Man hat 4 Knöpfe : '<<','<', >>' und '>'

'>>' verschiebt alle Einträge von links nach rechts. '<<' macht das Gleiche, nur umgekehrt.
'>' verschiebt den links selektierten Eintrag von links nach rechts '<' nach links.

Dann iterierst (For i:=...) Du durch die rechte Listbox und baust Dir so deine Query auf.

Overclocker 18. Dez 2007 17:12

Re: Unabhängige Sql Abfrage?
 
@alzaimar


das ist ja mal genial, genau sowas habe ich gesucht und schon ist das problem gelöst :)



Delphi-Quellcode:
adoquery1.sql.add('select '+DstList.Items.CommaText+' from Profil');
funktioniert super dankeschön


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 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