Hallo in die Runde!
Ich habe das folgende Problem, bei dem ich nicht weiterweiß. In einem Formular in geteilter Ansicht
gibt es ein gebundenes Textfeld "Ende" und ein ungebundenes Textfeld "txtEnde". Die Spalte "ende" in
der Datenbank ist vom Typ "datetime". Da das Ende-Datum nur minutengenau angezeigt werden soll,
verstecke ich das gebundene Feld "ende" und zeige in "txtEnde" einen gekürzten Datums-String:
Private Sub Form_Current()
If Not IsNull(Me!Ende) Then Me!txtEnde = Mid(CStr(Me!Ende), 1, 16) Else Me!txtEnde = ""
Debug.Print "txtEnde: " & txtEnde.Value
End Sub
Problem: txtEnde zeigt beim Blättern durch die Datensätze einen falschen Wert an, nämlich jeweils den
aus der vorherigen Zeile. Die Ausgabe vom debug.print zeigt hingegen den richtigen Wert! Wenn ich
das Formular minimiere und wiederherstelle, zeigt plötzlich auch das Formular den richtigen Wert.
Der folgende Code funktioniert also (notdürftig):
Private Sub Form_Current()
If Not IsNull(Me!Ende) Then Me!txtEnde = Mid(CStr(Me!Ende), 1, 16) Else Me!txtEnde = ""
' Me.Repaint
' repaint aktualisiert txtEnde nicht;
' workaround:
DoCmd.SelectObject acForm, "dafe"
DoCmd.Minimize
DoCmd.SelectObject acForm, "dafe"
DoCmd.restore
End Sub
Müßte nicht eigentlich "Repaint" das tun, was ich möchte?
Kann ich das Problem anders lösen, ohne Minimize/restore, denn das verursacht häßliches Flackern?
Viele Grüße
|