vielen Dank! Es sieht jetzt so aus und funktioniert auch, wenn nicht nur der bestehende Datensatz ergänzt, sondern komplett neu ist:
Code: Alles auswählen
Sub BuchungAuftragsFormular(oEvent)
oformAuftraege = oEvent.Source.Model.Parent 'Braucht nur ein Parent-Formular, egal wie es heißt!
stAuftragID = oformAuftraege.getString(oformAuftraege.findcolumn("Auftragnr"))
oformAuftrag = ThisDatabaseDocument.getformdocuments.GetByName("f-Auftrag")
oformAuftrag.open
oformAuftrag = oformAuftrag.Component.drawpage.forms(0)
'Ergänzung um Sicherheitsfragen
DIM intFrage As Integer
with oFormAuftrag
if .ismodified then
intFrage = MsgBox("Der angezeigte Datensatz wurde geändert. Änderungen speichern?", MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1, "Makro BuchungAuftragsFormular")
'MB_DEFBUTTON1 macht das Ja zur vorgeschlagenen Antwort.
if intFrage = IDYES then
if .isnew then
.insertrow
else
.updaterow
end if
end if
end if
end with
'Ergänzung Ende.
oformAuftrag.Filter = "Auftragnr = '"+stAuftragID+"'"
oFormAuftrag.reload
End Sub
Auch wenn ich in diesem Zustand mit den Base-Buttons in einen anderen Datensatz springe, werde ich gefragt, ob Änderungen gespeichert werden sollen (von Base selbst). Die werden dann auch gespeichert.
Aber diese Änderungen lösen vor dem Verlassen des Textfelds kein ismodified=true aus! Das Makro fragt nicht und speichert nicht. Wenn drei Textfelder geändert werden und der Cursor steht noch im dritten, werde ich gefragt, aber die Änderung im dritten Feld wird nicht gespeichert.
Also nochmals vielen Dank für die Makrohilfe. Aber zu Base kann ich nur sagen: ich bin entsetzt.

Gruß
Freischreiber