Textfelder per Makro aktualisieren (Base)

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Textfelder per Makro aktualisieren (Base)

Beitrag von Noebian »

Moin, moin,
ich möchte einige Felder eines Formulars per Makro aktualisieren - am liebsten so, dass der Anwender (ähnlich wie bei manuellen Veränderungen an den Daten) vorm Schließen des Formulars gefragt wird, ob er die Veränderungen speichern möchte (oder eben nicht).
Mit oFeld.text = strVariable
oder auch mit oSubForm.updateString(33,strVariable)
gelingt es mir, die Felder (bzw das Feld) zu füllen. Aber wenn ich dann das Formular schließe, ist die Änderung weg.
oSubForm.upDateRow() schreibt die Änderungen gleich hinein, also keine Chance auf Abbruch.
oForm.isModified= true führt dazu, dass ich beim Schließen zwar gefragt werde, ob ich speichern möchte, aber führt anschließend zur Fehlermeldung "Fehler beim Schreiben des aktuellen Datensatzes . Es wurden keine Werte verändert."
Hat jemand einen Tipp für mich?
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Textfelder per Makro aktualisieren (Base)

Beitrag von juetho »

Die entscheidenden Punkte lässt du bei deiner Problembeschreibung weg:

Welche Code-Variante wird an welches Ereignis gebunden?

Du erweckst jedenfalls den Eindruck, dass du für die verschiedenen Versuche mehrere Varianten (also unterschiedliche Makros, unterschiedliche Ereignisse) probiert hast. Dazu müsstest du mehr Informationen geben.

Das sinnvollste Verfahren ist IMHO das Eintragen des Wertes über oFeld.BoundField. Die Zuweisung an die Eigenschaft Text ist fast immer der falsche Weg, siehe das Handbuch 4.0 Seite 263:
Es ist deshalb sinnlos, die Eigenschaft Text des Kontrollfelds zu ändern.
Je nachdem, wann du prüfen willst (Button, Formular schließen, Datensatzwechsel), musst du ein passendes Ereignis suchen. Ich würde selbst fragen (if isModified then msgBox) und je nach der Antwort die Speicherung mit updateRow bestätigen oder mit cancelRowUpdates verwerfen.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: Textfelder per Makro aktualisieren (Base)

Beitrag von Noebian »

Ich denke, das hilft mir weiter. Danke.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Antworten