- Hauptformular: Tabelle mit Rechnungen (darunter Feld "kunden_id"), Anzeige in einzelnen Controls (Text- und numerische Felder).
- Als Zusatzinformation sollen Angaben zur kunden_id in Textfeldern angezeigt werden.
- Unterformular: Tabelle der Kunden, Anzeige im Tabellenkontrollfeld.
- Weil die Daten bereits im Unterformular bzw. Tabellenkontrollfeld vorhanden sind, sollten sie direkt geholt werden können. Im Formular geht das über oForm.first/oForm.next, bis die richtige kunden_id gefunden wurde; im GridControl über eine Schleife über alle Zeilen (siehe die beiden Code-Ausschnitte).
- Das Formular hat aber keine Methode, um gezielt einen Wert zu suchen; das habe ich inzwischen über XResultSet herausgefunden. Hat das GridControl eine Suchfunktion? Ich habe noch nichts gefunden, ob das GridControl eigene Methoden zur Navigation und zur Suche hat oder auf das ResultSet des Formulars zurückgreift.
- Wenn im Hauptformular der Datensatz gewechselt wird, soll auch im Unterformular der richtige Kunde markiert werden. Das klappt mit dem folgendem Verfahren.
Beim folgenden Verfahren wird aber im Tabellenkontrollfeld nur ab und zu der richtige Datensatz markiert (es werden immer die richtigen Daten angezeigt). Ich kann natürlich auf dieses Verfahren verzichten, aber es wundert mich doch.
Code: Alles auswählen
gridForm.first while not (gridForm.grid.getByIndex(0).Value = currentID) gridForm.next wend
Code: Alles auswählen
gridForm.first while not (gridForm.getInt(1) = currentID) gridForm.next wend
- thisComponent.lockcontrollers() hat keine Auswirkung: Während mit gridForm.next der richtige Datensatz gesucht wird, sieht man den Datensatzzeiger im Tabellenkontrollfeld springen.