Entwickler-Ecke
Datenbanken - Combobox Datenbank
Melcho - Mi 21.07.04 08:32
Titel: Combobox Datenbank
Morgen ich wollte mal was fragen,
ich habe folgendes Problem:
Ich habe eine Combobox und eine Datenbank :D ,
In der Datenbank gibt es eine Spalte "Typ" und in der Combobox stehen die verfügbaren Typen aber noch nicht über die Datenbank reingeschrieben sondern über die Eigenschaft Items.
Dann soll man sich denn gewünschten Typen aussuchen und dann sollen alle Datensätze mit dem ausgewählten Typ in einem DBGrid angezeigt werden.
Wäre schön wenn ihr mir schnell helft :nixweiss: .
Danke im voraus :flehan: .
recall - Mi 21.07.04 09:14
hallo,
etwas spärliche Informationen, aber gut. Nehmen wir an, die Tabelle heisst TEST, das DBGrid ist mit der Query q1 (über ein DataSource) verbunden. Die ComboBox heisst cb1.
In das OnChange-Ereignis von der ComboBox schreibst du:
Delphi-Quelltext
1: 2: 3: 4:
| if q1.Active then q1.Close; q1.SQL.Text := 'Select * from TEST where TYP=:p1'; q1.ParamByName('p1').AsString := cb1.Items[cb1.ItemIndex]; q1.Open; |
Du solltest dir allerdings in q1 das Update, Insert und Delete-SQL mit dem SQL-Generator erstellen lassen und zwar indem du zuerst das Statement "Select * from TEST" in die Query schreibst und dann auf GenerateSQL klickst (ich hoffe du weisst wie das geht, sonst nachfragen :) ).
Viele Grüsse.
P.S.: Wie du alle verfügbaren Typen in die ComboBox kriegst (neue Query q2):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if q2.Active then q2.Close; q2.SQL.Text := 'Select distinct(TYP) from TEST'; q2.Open; cb1.Clear; While not q2.Eof do begin cb1.Items.Add(q2.Fields[0].AsString); q2.Next; end; q2.Close; |
Wenn du allerdings eine größere Tabelle hast, dann würde ich eher eine zusätzliche Tabelle anlegen, in der alle Typen aufgelistet sind (und zwar jeder nur einmal). Sag mal: Welche Datenbank nutzt du ???
Melcho - Mi 21.07.04 09:27
Danke dir :lol: :lol: :lol: !
Ich werds gleich mal ausprobieren,
ich nutze MYSQL.
Aber was bedeutet q1.ParamByName('p1').AsString := cb1.Items[cb1.ItemIndex];
ParamByName <-- das kennt er garnicht
recall - Mi 21.07.04 12:09
Wenn du in ein SQL-Statement ":irgendwas" schreibst, dann ist "irgendwas" ein Parameter. Diesen kannst du dann mit einem Wert füllen (über ParamByName). Du kannst aber auch direkt schreiben:
Delphi-Quelltext
1:
| q1.SQL.Text := 'Select * from TEST where TYP=''' + cb1.Items[cb1.ItemIndex] + ''''; |
Das hat manchmal geringe Performance-Nachteile, aber sonst ist das OK. Aber sag mal, welche Komponenten nutzt du für den DB-Zugriff, denn die kennen meines Wissens alle "ParamByName" !? Übrigens: Die Datenbank unterscheidet Groß- und Kleinschreibung ! also besser:
Delphi-Quelltext
1:
| q1.SQL.Text := 'Select * from TEST where Upper(TYP)=''' + UpperCase(cb1.Items[cb1.ItemIndex]) + ''''; |
Viele Grüsse.
Melcho - Mi 21.07.04 14:13
Vielen Danke für eure Hilfe das Problem ist jetzt gelöst :lol:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!