|
01.11.2009
Editierten Datensatz zurückspeichern
Für dieses Beispiel benötigen Sie die Beispiel-Datenbank FAHRZEUGE und das Projekt fahrzeuge.xdev.
Editierte Datensätze, welche bereits in der Datenbank existieren, müssen Sie mit der Methode update ( ) | XDEV NLS: überschreiben ( ) speichern. Die Methode überschreibt einen bereits existierenden Datensatz in einer Datenbank-Tabelle, während die Methode save ( ) | XDEV NLS: speichern ( ) immer einen neuen Datensatz anlegt.
Die Methode update ( ) | XDEV NLS: überschreiben ( ) kann jedoch nur dann ausgeführt werden, wenn das Formular vorher mit einem Datensatz gefüllt wurde, der bereits in der Datenbank existiert. Dies müssen Sie vor dem Aufruf von update ( ) | XDEV NLS: überschreiben ( ) prüfen, was jedoch recht einfach ist. Denn beim Füllen des Formulars wird automatisch die ID des Datensatzes im Formular hinterlegt, genauer gesagt in den Formular-Zusatzdaten gespeichert.
» Zusatzdaten (TagData) «
Die Zusatzdaten sind eine Art kleiner Zusatzspeicher den jede GUI-Komponente besitzt, um bei Bedarf Werte darin zwischenspeichern zu können. Leere Formular-Zusatzdaten sind ein Beleg dafür, dass die aktuellen Formular-Einträge noch nicht in der Datenbank existieren. Die Formular-Zusatzdaten können Sie mit Hilfe der Formular-Methode getTagData ( ) | XDEV NLS: holeZusätzlicheDaten ( ) auslesen und mit Hilfe einer if ( ) | XDEV NLS: Wenn ( ) Anweisung ganz leicht abfragen.
» 1 Button für Anlegen und Ändern «
In der Praxis können Sie für das Speichern neuer und das Überschreiben editierter Datensätze wahlweise zwei separate Buttons anbieten, z.B. Neu und Ändern, oder beide Funktionen mit einem einzigen Button Speichern zusammenfassen.
Code für einen separaten Ändern-Button:
1
2
3
4
5
6
7
|
ACTION_PERFORMED ( )
{
if (Formular.getTagData()!="")
{
Formular.update();
}
}
|
If-Block:
Die if Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.getTagData( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.update( ) im if Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
|
|
1
2
3
4
|
ACTION_PERFORMED ( )
If Formular.getTagData()!="" Then
Formular.update()
End IF
|
If-Block:
Die if Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.getTagData( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.update( ) im if Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
|
|
1
2
3
|
Bei Mausklick ( )
Wenn (Formular\holeZusätzicheDaten()!="")
Formular\überschreiben()
|
Wenn-Block:
Die Wenn Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.holeZusätzlicheDaten( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.überschreiben( ) im Wenn Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
|
|
Code für nur einen Speichern-Button:
1
2
3
4
5
6
7
8
9
10
11
|
ACTION_PERFORMED ( )
{
if (Formular.getTagData()!="")
{
Formular.update();
}
else
{
Formular.save();
}
}
|
If-Block:
Die if Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.getTagData( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.update( ) im if Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
Else-Block:
Wenn die Formular-Zusatzdaten jedoch leer sind, also keine Datensatz-ID enthalten, wird automatisch der else Block ausgeführt, d.h. es wird dann die Methode Formular.save( ) aufgerufen, welche die Formular-Daten als neuen Datensatz in der Datenbank-Tabelle abspeichert (Insert).
|
|
1
2
3
4
5
6
|
ACTION_PERFORMED ( )
If Formular.getTagData()!="" Then
Formular.update()
Else
Formular.save()
End IF
|
If-Block:
Die if Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.getTagData( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.update( ) im if Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
Else-Block:
Wenn die Formular-Zusatzdaten jedoch leer sind, also keine Datensatz-ID enthalten, wird automatisch der else Block ausgeführt, d.h. es wird dann die Methode Formular.save( ) aufgerufen, welche die Formular-Daten als neuen Datensatz in der Datenbank-Tabelle abspeichert (Insert).
|
|
1
2
3
4
5
|
Bei Mausklick ( )
Wenn (Formular\holeZusätzicheDaten()!="")
Formular\überschreiben()
Sonst
Formular\speichern()
|
Wenn-Block:
Die Wenn Anweisung prüft anschließend, ob der Rückgabewert der Methode Formular.holeZusätzlicheDaten( ) nicht "" - sprich nicht leer ist. Der Operator != bedeutet nicht gleich. Die Zeichenfolge "" steht für eine leere Zeichenkette (Leer-String).
Wenn die Formular-Zusatzdaten nicht leer sind, also eine Datensatz-ID enthalten, wird die Anweisung Formular.überschreiben( ) im Wenn Block aufgerufen, welche den bereits existierenden Datensatz in der Datenbank-Tabelle mit den Formular-Daten überschreibt.
d.h. es wird dann die Methode Formular.speichern( ) aufgerufen, welche die Formular-Daten als neuen Datensatz in der Datenbank-Tabelle abspeichert.
Sonst-Block:
Wenn die Formular-Zusatzdaten jedoch leer sind, also keine Datensatz-ID enthalten, wird automatisch der Sonst Block ausgeführt, d.h. es wird dann die Methode Formular.überschreiben( ) aufgerufen, welche die Formular-Daten als neuen Datensatz in der Datenbank-Tabelle abspeichert (Insert).
|
|
|