
Danke!
Nein, die Beispiel-DB war nur, um das zu zeigen, was ich für einen Bug halte. Und es läßt sich dort durch deine 2s Wartezeit beheben. Nur in meiner richtigen DB klappt das nicht (gesplittet).
Hier das Makro, so wie es zur Zeit aussieht: (es wird z. B. von der Buchungstabelle aus gestartet, aus einer Buchungszeile, wo eine Auftragsnummer steht).
Könntest du das so abändern, daß deine geänderte Zuordnung drin ist? So, daß es keine Konflikte gibt?
(Die erweiterten Rückfragen, ob Änderungen rückgängig gemacht werden sollen, brauche ich eigentlich nicht. Es reicht, wenn die bei Nein einfach verworfen werden und dann gefiltert wird).
Gruß
Freischreiber
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)
'Ladezustand des Formulars abfragen
Dim j
j=0
if NOT oformAuftrag.isloaded then
do
j=j+1
wait 10
if oformAuftrag.isloaded then
msgbox "geladen!!! (dauerte " & format(j/100, "#0.00") & " Sekunden)"
exit do
end if
loop while j < 201
end if
'Ergänzung um Sicherheitsfragen
DIM intFrage As Integer
with oFormAuftrag
' Entweder: ------------------------------
' wait 200
' oder: ---------------------------------
Dim i
i=0
Do While NOT .ismodified
i=i+1
wait 10 '... 1/100 Sekunde warten
If i > 200 Then Exit Do '... Schleife nach ~2 Sekunde beenden
Loop
if i<201 AND i>0 then msgbox "Wartezeit = " & i/10 & " Sekunden"
' --------------------- ... Ende "oder" --
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.ApplyFilter = TRUE (geht hier ohne)
oFormAuftrag.reload
End Sub