Autor Beitrag
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 07.11.06 12:52 
Ich habe eine DBComboBox. Dort soll z.B. nur der Name einer Person als Auswahl erscheinen. Nach Auswahl eines Namens sollen alle Daten, die zu dieser Person gehören, in einem DBGrid angezeigt werden. Wie kann man das am schnellsten und am einfachsten lösen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 07.11.06 13:06 
Es gibt natürlich mehrere Ansätze. Jetzt im Rückblick (dieses Topic), gestehe ich ein, dass der Ansatz mit einer DBComboBox doch nicht ideal ist. Eine Möglichkeit wäre eine DBLookUpComboBox. Das hat den Vorteil, dass Du die Daten nicht vorbereiten musst. Allerdings ist das auch ein wenig mit Kanonen auf Spatzen geschossen. Wenn Du auf den ursrpünglichen Ansatz mit der "normalen" ComboBox zurück kommst, musst Du zwar die Item-Liste vorher füllen, aber dafür ist für die ComboBox etwas anfängerfreundlicher.

Lies mit einem separaten Query (SQL kennst Du?) die verschiedenden Personen ein. Mit diesem Query füllst Du dann die Itemliste der ComboBox. Der Style der ComboBox (Siehe Objekt-Inspektor) sollte csDropDownList sein.
Ein zweites Query benutzt Du für Dein DBGrid. Jedesmal, wenn in der ComboBox (OnChange-Ereignis) eine andere Person gewählt wird, musst Du dieses Query aktualisieren. Da es immer das selbe Feld ist, das sich ändert, wäre hier der Einsatz eines Query-Parameters sinnvoll.

Wenn Du Hilfe bei den SQL-Statements benötigst, wäre es praktisch, wenn Du die Tabellennamen und Feldnamen (zumindest für den Personennamen) bekannt gibst.
NTM Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 07.11.06 13:16 
Hallo Peter,
danke für deine Antwort mit denn SQl Befehlen habe ich nicht so das Problem.
Eher verstehe ich gerade das mit dem OnChange-Ereignis nicht was für ein Befehl muß ich dort eingeben und wie kommt die Verbindung zwischen Combobox und DBGrid zustand.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 07.11.06 13:43 
Es gibt keine Verbindung zwischen der ComboBox und dem DBGrid zustande.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Query1.Close;
// Hier baust Du Dein Query neu auf.
// Wenn Du mit Parametern arbeitest, musst Du den nur neu setzen.
// Ansonsten den Feldnamen auf den Inhalt von ComboBox1.Text setzen.
  Query.Open;
end;
Da als Style csDropDownList verwendet wird, wird das OnChange nur aufgerufen, wenn sich die Auswahl komplett ändert. Der Standard-Style hätte bei jedem Tastendruck zu diesem Ereignis geführt.

Ich hoffe, dass das einigermaßen verständlich ist.
NTM Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 07.11.06 13:48 
Hallo Peter,
Wie das ist alles?.
Na ja danke. Das hätte ich jetzt nicht gedacht.

Gruß

André