Seite 1 von 1

Textfelder per Makro aktualisieren (Base)

Verfasst: Di, 26.03.2013 23:37
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?

Re: Textfelder per Makro aktualisieren (Base)

Verfasst: Mi, 27.03.2013 08:50
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

Re: Textfelder per Makro aktualisieren (Base)

Verfasst: Mi, 27.03.2013 13:33
von Noebian
Ich denke, das hilft mir weiter. Danke.