Aloha
Aktualisiert das gebundene Feld der Spalte 3 mit dem String "neuerString". updateInt, updateBoolean etc funktionieren analog dazu.
Dabei ist zu beachten, dass z.B. ein Text (bzw Char/Varchar)-Feld in der Datenbank auch entsprechend mit updateString angesprochen werden sollte.
Intern passiert dies bei jedem Tastendruck in einem gebundenen Feld automatisch, in einem Makro muss zwingend dafür gesorgt werden, dass tatsächlich das gebundene Feld geändert wird, nicht nur z.B. der angezeigte Text in einer TextBox. Ansonsten "weiss die Datenbank nicht", dass überhaupt Änderungen vorgenommen wurden. Alternative Möglichkeiten zum updateX hatte ich ja bereits etwas weiter oben genannt.
Schreibt die aktuellen Daten aller gebundenen Felder in die Datenbank zurück. Im normalen Formularnavigator passiert dies z.B. durch einen Wechsel des Datensatzes.
Liest die aktuellen Daten des Datensatzes aus der Datenbank aus. Vergleichbar mit der Navigator-Funktion "Änderungen rückgängig". Änderungen am aktuellen Datensatz gehen verloren, wenn sie nicht vor in die Datenbank geschrieben wurden.
Lädt das Formular neu. Ist z.B. notwendig nach dem Setzen von Filtern per Makro.
Überprüft, ob ein neuer Datensatz angelegt wurde.
So kannst Du z.B. mit der Abfrage
Code: Alles auswählen
If oForm.isNew Then
oForm.insertRow
ElseIf oForm.isModified Then
oForm.updateRow
End If
einen Datensatz ändern oder anlegen, je nachdem, wo sich der Cursor gerade befindet.
oForm.isNew wird immer dann als True ausgewertet, wenn sich der Cursor auf InsertRow befindet (also Datensatz anlegen) und ein Eintrag in mind. einem gebundenen Feld stattgefunden hat - s.o., das kann z.B. durch einen Tastendruck oder durch die updateX-Methode geschehen.
oForm.isModified wird entsprechend als True ausgewertet, wenn Änderungen an mind. einem gebundenen Datenfeld eines bestehenden Datensatzes stattgefunden haben.
Das Aufrufen von .updateRow bei einem neuen Datensatz führt zu einem Fehler, andersherum genauso.
Wird benötigt zur Arbeit mit Parametern.
z.B. wäre folgendes möglich:
Code: Alles auswählen
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0)
oForm.Command = "SELECT * FROM ""meineTabelle"" WHERE ""ID"" = ?"
oForm.CommandType = 2
oForm.setInt(1,2)
oForm.execute
Das Fragezeichen steht dabei als Platzhalter für einen Parameter, per .setInt(1,5) wird beim Ausführen der Abfrage (.execute) das 1. gefundene Fragezeichen durch eine 5 ersetzt.
Anstatt direkt mit Filtern o.Ä. zu arbeiten und jedes Mal einen neuen Filtertext setzen zu müssen, kannst Du einfach nur entsprechend einmal die Abfrage festlegen (.Command) und beim Setzen der Filter brauchst Du dann lediglich den Paramter anzupassen (.setInt(1,x)) - analog dazu bei setString etc.
Der Unterschied zum Filter ist, dass per Filter nur die darauf zutreffenden Datensätze des ResultSets im Formular angezeigt werden und durch einfaches Deaktivieren alle Daten wieder sichtbar werden, whrend bei dieser Methode das ResultSet, und somit quasi das Formular selber, nur die zutreffenden Datensätze enthält.