A03: Funktion in 'BeforeUpdate' hindert DB daran, die Daten im Feld zu speichern

01/01/2008 - 12:21 von Rüdiger Gram | Report spam
Hallo NG,

in einer umfangreichen Funktion ruft eine Zeile die Fehlermeldung hervor:

"Die Funktion, die für dieses Feld der Eigenschaft 'Vor Aktualisierung'
zugeordnet ist, hindert 'Rechnung DB' daran, die Daten in dem Feld zu
speichern."

Der angemeckerte Code lautet:

Forms!Rechnungen![Rechnungen Unterformular].Form.Filter "(DatePart(""yyyy"",Rechnungsdatum)=" & Forms!Rechnungen!Umsatzjahr & ")"

Die Funktion rufe ich aus einem UFo aus BeforeUpdate auf mit:
Call Umsàtze_aktualisieren(Me)

Das Kuriose daran ist, daß die Funktion ohne Fehlermeldung làuft, wenn ich
Sie vom HFo aus aufrufe. Nur wenn ich Sie vom UFo aus 'BeforeUpdate'
aufrufe, wird die Zeile angemeckert.

Wenn ich z.B. im UFo bei BeforeUpdate nur stehen habe: Me.requery, kommt die
gleiche Fehlermeldung.

Hat jemand eine Idee, wo da der Haken sein könnte?

Gruß - Rüdiger
 

Lesen sie die antworten

#1 Peter Doering
01/01/2008 - 13:14 | Warnen spam
Hallo,

Rüdiger Gram wrote:

in einer umfangreichen Funktion ruft eine Zeile die Fehlermeldung hervor:

"Die Funktion, die für dieses Feld der Eigenschaft 'Vor Aktualisierung'
zugeordnet ist, hindert 'Rechnung DB' daran, die Daten in dem Feld zu
speichern."

Der angemeckerte Code lautet:

Forms!Rechnungen![Rechnungen Unterformular].Form.Filter > "(DatePart(""yyyy"",Rechnungsdatum)=" & Forms!Rechnungen!Umsatzjahr & ")"

Die Funktion rufe ich aus einem UFo aus BeforeUpdate auf mit:
Call Umsàtze_aktualisieren(Me)

Das Kuriose daran ist, daß die Funktion ohne Fehlermeldung làuft, wenn ich
Sie vom HFo aus aufrufe. Nur wenn ich Sie vom UFo aus 'BeforeUpdate'
aufrufe, wird die Zeile angemeckert.

Wenn ich z.B. im UFo bei BeforeUpdate nur stehen habe: Me.requery, kommt die
gleiche Fehlermeldung.

Hat jemand eine Idee, wo da der Haken sein könnte?



Wenn du solche Aktionen aus Control_ oder Form_BeforeUpdate aufrufst, loest
das eine Rekursion aus, was Access zum Glueck nicht zulaesst. Im Detail:
das Formular ist Dirty und soll geschrieben werden (warum sonst waerst du
in _BeforeUpdate). Durch das Setzen des Filters bzw. Requery wird ebenfalls
die Aktualisierung veranlasst, was zur Rekursion fuehrt.

Also, verschiebe den Code woanders hin, so, dass zuerst gefahrlos
geschrieben, und danach .Filter bzw. .Requery ausgefuehrt werden kann.

Gruss - Peter

Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen