Füllen der linken Listbox:
1
2
3
|
Nach der Darstellung ( )
XDEV Datenbankabfrage #EXTRAS << EXTRAS
Lokal\listenEinträge\fülleAusVirtuellerTabelle(#EXTRAS, "EXTRAS", "ID")
|
XDEV Datenbankabfrage #EXTRAS << EXTRAS
Mit einer Datenbankabfrage wird zuerst die Virtuelle Tabelle #EXTRAS mit allen Extras gefüllt.
Lokal\listenEinträge\fülleAusVirtuellerTabelle(#EXTRAS, "EXTRAS", "ID")
Füllt die Listbox mit den Daten aus der Virtuellen Tabelle #EXTRAS.
Oberer Button zum Hinzufügen von Listbox-Einträgen:
1
2
3
|
Bei Mausklick ( )
Wenn (Listbox2\listenEinträge\beinhaltetWert(Listbox\holeSelektierteDaten())=FALSCH)
Listbox2\listenEinträge\zeileHinzufügen(Listbox\holeSelektiertenWert(), Listbox\holeSelektierteDaten())
|
Wenn (Listbox2\listenEinträge\beinhaltetWert(Listbox\holeSelektierteDaten())=FALSCH)
Prüft anhand der ID des selektierten Listbox-Eintrages, ob der in der linken Listbox Listbox selektierte Eintrag in der rechten Listbox Listbox2 noch nicht vorhanden ist.
Listbox2\listenEinträge\zeileHinzufügen(Listbox\holeSelektiertenWert(), Listbox\holeSelektierteDaten())
Wenn der in der linken Listbox Listbox selektierte Eintrag in der rechten Listbox Listbox2 noch nicht vorhanden ist, wird der Listbox-Eintrag übertragen.
Unterer Button zum Löschen von Listbox-Einträgen:
1
2
|
Bei Mausklick ( )
Listbox2\listenEinträge\zeileEntfernen(Listbox2\selektierteZeile( ))
|
Listbox2\listenEinträge\zeileEntfernen(Listbox2\selektierteZeile( ))
Der selektierte Listbox-Eintrag wird aus der Listbox entfernt.
Eigene Funktion save( ) zum Speichern der Listbox:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
save( )
{
#FAHRZEUGE_EXTRAS.clear();
Int fahrzeug_ID = Formular.getTagData();
Int alleZeilen = Listbox2.listItems.getSize();
for (Int aktuelleZeile; aktuelleZeile<alleZeilen; aktuelleZeile = aktuelleZeile+1)
{
#FAHRZEUGE_EXTRAS.addRow();
#FAHRZEUGE_EXTRAS.setValueAt(aktuelleZeile, #FAHRZEUGE_EXTRAS.FAHRZEUGE_ID, fahrzeug_ID);
#FAHRZEUGE_EXTRAS.setValueAt(aktuelleZeile, #FAHRZEUGE_EXTRAS.EXTRAS_ID, Listbox2.listItems.getData(aktuelleZeile));
}
XDEV DeleteDB FAHRZEUGE_EXTRAS;
#FAHRZEUGE_EXTRAS.synchronizeChangedRows();
}
|
speichern( )
Die Methode speichern( ) wird bei der Listbox hinterlegt und kann z.B. beim Formular-Speichern-Button mit Listbox.speichern( ) aufgerufen werden.
#FAHRZEUGE_EXTRAS\löscheAlles(
Löscht die Virtuelle Tabelle #FAHRZEUGE_EXTRAS, da diese noch Werte enthalten könnte.
Ganzzahl fahrzeug_ID = Formular\holeZusätzlicheDaten()
Die Fahrzeug-ID wird aus den Formular-Zusatzdaten ausgelesen, da jedes Extra immer zusammen mit einer Fahrzeug-ID gespeichert wird. Vor dem Aufruf der Methode speichern( ) muss die Fahrzeug-ID in den Formular-Zusatzdaten hinterlegt werden. Die Fahrzeug-ID kann jedoch auch auf eine andere Weise übergeben werden.
Ganzzahl alleZeilen = Listbox\listenEinträge\anzahlEinträge()
Ermittelt die Anzahl der Listbox-Einträge und speichert diese in der Variable alleZeilen.
Zählerschleife (Ganzzahl aktuelleZeile | aktuelleZeile<alleZeilen | aktuelleZeile = aktuelleZeile+1)
Die Schleife wird so oft wiederholt wie Zeilen in der Listbox vorhanden sind.
#FAHRZEUGE_EXTRAS\fügeZeileHinzu()
Fügt eine neue, leere Zeile in die Virtuelle Tabelle #FAHRZEUGE_EXTRAS ein.
#FAHRZEUGE_EXTRAS\setzeWert(aktuelleZeile, #FAHRZEUGE_EXTRAS\FAHRZEUGE_ID, fahrzeug_ID)
Speichert die Fahrzeug-ID im Datenfeld FAHRZEUG_ID.
#FAHRZEUGE_EXTRAS\setzeWert(aktuelleZeile, #FAHRZEUGE_EXTRAS\EXTRAS_ID, Listbox\listenEinträge\holeWert(aktuelleZeile))
Ermittelt die ID des aktuellen Listbox-Eintrages, und speichert diese im Datenfeld EXTRAS_ID ab.
XDEV AusDatenbankLöschen FAHRZEUGE_EXTRAS
Löscht alle ID-Paare mit der aktuellen Fahrzeug-ID, um mehrfaches Speichern von ID-Paaren mit der aktuellen Fahrzeug-ID zu verhindern.
#FAHRZEUGE_EXTRAS\synchronisiereGeänderteZeilen()
Synchronisiert die Virtuelle Tabelle #FAHRZEUGE_EXTRAS mit der entsprechenden Datenbank-Tabelle und speichert so alle ID-Paare ab.
Eigene Funktion zum Füllen der rechten Listbox bei der Anzeige des Datensatzes:
1
2
3
4
|
füllen ( )
Ganzzahl fahrzeug_ID = Formular\holeZusätzlicheDaten()
XDEV Datenbankabfrage #FAHRZEUGE_EXTRAS_JOIN << FAHRZEUGE_EXTRAS
Listbox2\listenEinträge\fülleAusVirtuellerTabelle(#FAHRZEUGE_EXTRAS_JOIN, "EXTRAS", "EXTRAS_ID")
|
füllen( )
Füllt die rechte Listbox. Die Methode kann bei der Listbox hinterlegt werden und wird dann nach dem Füllen des Hauptformulars mit Lokal\füllen( ) aufgerufen.
Ganzzahl fahrzeug_ID = Formular\holeZusätzlicheDaten()
Liest die Fahrzeug-ID aus den Zusatzdaten des Formulars aus. Die Übergabe der ID kann auch auf andere Weise erfolgen.
XDEV Datenbankabfrage #FAHRZEUGE_EXTRAS_JOIN << FAHRZEUGE_EXTRAS
Datenbankabfrage. Selektiert in der Datenbank-Tabelle FAHRZEUGE_EXTRAS die Datenfelder FAHRZEUGE_ID und EXTRAS_ID sowie in der Tabelle EXTRAS_ID das Datenfeld EXTRAS und speichert das Abfrageergebnis in der Virtuellen Tabelle #FAHRHZEUGE_EXTRAS_JOIN.
Listbox2.listItems.fillFromVT(#FAHRZEUGE_EXTRAS_JOIN, "EXTRAS", "EXTRAS_ID")
Füllt die rechte Listbox mit den Daten aus der Virtuellen Tabelle #FAHRZEUGE_EXTRAS_JOIN.
|