Inhalt von Me.Recordset bei Form_Current noch nicht aktuell

21/10/2009 - 23:35 von Paul Rohorzka | Report spam
Hallo!

Ich habe unter A2k in einem gebundenen Formular folgendes Problem:
Wenn ich im Current-Ereignis eines Formulars den Inhalt eines
Steuerelements auslese - Me.Controls("EineZahl").Value - entspricht
er natürlich dem des nun selektierten Datensatzes. Der Inhalt von
Me.Recordset.Fields("EineZahl").Value liefert jedoch meistens den Wert
des Datensatzes vor dem Datensatzwechsel.

Beispiel (siehe auch http://softconcept.at/Pauli/Control...tField.zip):
Tabelle mit einem Feld [EineZahl], in dem die Zahlen von 1 bis 4 drin
stehen, in einem gebundenen Formular bewege ich mich vom ersten bis
zum letzten Datensatz und wieder zurück. Das Ergebnis illustriert das
genannte Verhalten:
Control: 1 RecordsetField: 1
Control: 2 RecordsetField: 1
Control: 3 RecordsetField: 2
Control: 4 RecordsetField: 3
Control: 3 RecordsetField: 4
Control: 2 RecordsetField: 3
Control: 1 RecordsetField: 2

Wenn ich allerdings den Inhalt des Recordsets mittels Timer erst kurze
Zeit nach dem Current-Ereignis durchführe, ist auch das Recordset
wieder synchron:
Control: 1 RecordsetField: 1
Control: 2 RecordsetField: 2
Control: 3 RecordsetField: 3
Control: 4 RecordsetField: 4
Control: 3 RecordsetField: 3
Control: 2 RecordsetField: 2
Control: 1 RecordsetField: 1

Könnt ihr mir erklàren, warum das so ist, und was ich an der Wurzel
des Problems (also abseits des Timer-Workarounds) dagegen tun kann?
Oder könnt ihr dieses Verhalten bei euch vielleicht gar nicht
nachvollziehen (siehe Beispieldatenbank oben)?

Hintergrund: Mittels Me.Recordset.Clone möchte ich herausfinden, ob
ich bereits beim ersten oder letzten Datensatz bin. Der an sich nicht
sehr spannende Code für diese Aufgabe hat aber aufgrund des oben
beschriebenen Verhaltens ganz eigenartige Effekte gezeitigt.

Ich danke euch!
LG,
Paul
 

Lesen sie die antworten

#1 Josef Poetzl
22/10/2009 - 00:03 | Warnen spam
Hallo!

Paul Rohorzka schrieb:
Ich habe unter A2k in einem gebundenen Formular folgendes Problem:
Wenn ich im Current-Ereignis eines Formulars den Inhalt eines
Steuerelements auslese - Me.Controls("EineZahl").Value - entspricht
er natürlich dem des nun selektierten Datensatzes. Der Inhalt von
Me.Recordset.Fields("EineZahl").Value liefert jedoch meistens den Wert
des Datensatzes vor dem Datensatzwechsel.


[...]
Könnt ihr mir erklàren, warum das so ist, und was ich an der Wurzel
des Problems (also abseits des Timer-Workarounds) dagegen tun kann?
Oder könnt ihr dieses Verhalten bei euch vielleicht gar nicht
nachvollziehen (siehe Beispieldatenbank oben)?



Ich testete mit Ac02 und AC07 ... nirgend konnte ich dieses Verhalten
feststellen.

Mit Ac00 muss ich mich zum Glück nicht mehr plagen. ;-)
Wobei ich mich allerdings bei Form-Recordsets unter Ac00 an keine
solchen Probleme erinnern kann.

Hast du schon einmal versucht mittels Bookmark-Eigenschaft eine
Synchronistation zu erzwingen?
| me.recordset.Bookmark = me.Bookmark
Oder teste doch einmal, was passiert, wenn du den DS-Zeiger des
Formulars über Recordset.MoveNext verschiebst und ob dann dann das
Formular nachlàuft.


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen