Also mit den Fieldbyname ist klar ... Allerdings hab ich mit dem FindKey Probleme ...
Ich schreib mal mein Programm :
- Form1 mit einer Listbox1 und einem Richedit ("rich")
- Datenbank mit Nachnamen (Feld "Nachname") und Vornamen (Feld "name")
- Datenbank wird mit "data1.table1" angesprochen ...
Wenn die Form1 aktiviert wird, werden alle Nachnamen in die Listbox eingelesen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.FormActivate(Sender: TObject); begin rich.Lines.clear; count := 0; max := data1.table1.FieldDefs.Count; while (count < max ) do begin listbox1.items.add(data1.table1['Nachname']); data1.table1.Next; inc(count); end;//while end;//Form activate |
Wenn jetzt ein Eintrag der Nachnamen in der Listbox gewählt wird (onclick) soll der entsprechende Vorname angezeigt werden (in dem Beispiel im Richedit ("rich") :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.ListBox1Click(Sender: TObject); var sel: integer; begin sel := listbox1.ItemIndex; nachname := listbox1.Items.Strings[sel];
//if data1.Table1.FindKey([???]) then Vorname := data1.Table1.FieldByName('vorname').asstring; //Hier brauch ich eben irgendwoher den Index der Zeile
// Ist nur zum anzeigen, was ich gelesen habe, bevor es weiterverarbeitet wird : rich.lines.clear; rich.lines.add('Nachname = ' + nachname + '(' + inttostr(sel) +') ... Vorname = ' + vorname); end; //Listboxclick |
Also was müsste ich an dem Code ändern, damit es gelesen wird ... Bei meinem Beispiel wird mir immer der letzte Vorname aus meiner DB angezeigt ... ist ja auch klar : der Index rattert im form1.activate ja bis zum Schluss durch ... wie kann ich also auf den aktuellen Datensatz zugreifen ???
Es muss doch irgendwie so nach dem Schema gehen :
Nachname aus Zeile X=Schmidt > Vorname aus Zeile x = sowieso
Den index der Zeile hab ich ja bereits in der Variablen "sel" gespeichert ...
(Hoffe ist verständlich
)
Es gibt keine dummen Fragen ... Nur blöde Antworten !!!