Liebe Experten,
ich habe mal wieder ein kleines Problem, bei dem ich hier die geschätzte Hilfe benötige.
Ich habe ein Endlosformular erstellt, dass gefiltert geöffnet wird. Hier soll im Formularfuß die Summe des Formularfeldes "GezahlteBewertungsreserve" gebildet werden. Dieses passiert auch im Feld "SummeBewertung" durch "=Summe([GezahlteBewertungsreserve])".
Nun gebe ich in der gefilterten Ansicht im Feld "GezahlteBewertungsreserve" für alle angezeigten Datensätze einen Wert ein.
Nun soll mittels Button cmdStart der jeweilige Wert übernommen werden und die Summe mit einer Zahl in "vardoublemarker1" verglichen werden. Der dort enthaltene Betrag stimmt auch.
Nun ergibt sich mit der Ausführung folgender Prozedur ein Problem:
Private Sub cmdStart_Click()
Me.Requery
MsgBox "1" & Me.SummeBewertung & "2" & vardoublemarker1
If Me.SummeBewertung <> vardoublemarker1 Then
MsgBox "Es wurde eine Gesamtbewertungsreserve " _
& "von " & vardoublemarker1 & " € angegeben. Diese " _
& "weicht von den einzelnen Anteilen um " & Me.SummeBewertung - vardoublemarker1 & " € ab.", 64
Else
DoCmd.Close acForm, Me.Name
End If
End Sub
1. Habe ich alles ohne das Me.Requery ausgeführt. Dann fehlt mir aber jedes Mal in der Summe der Wert des letzten Datensatzes.
2. In der angegebenen Form ist das Summenfeld immer leer...
3. Wenn ich im VB-Editor das Schritt für Schritt so ausführen lasse, funktioniert es, da er dann komischerweise dass Summenfeld füllt...
Wie kann ich hier eine Lösung herbeiführen?
Me.SummeBewertung.Requery funktioniert leider auch nicht.....
Ich danke bereits vorab für die Mühe...
Tragger
Hi.Dann fehlt mir aber jedes Mal in der Summe der Wert des letzten Datensatzes.Dann speichere den Datensatz vor der Prüfung mitMe.Dirty = Falseund verzichte auf das Requery.
Hey MaggieMay,
vielen Dank für deine schnelle Antwort. Das bringt mich folgendermaßen weiter, ist aber leider noch nicht die Lösung.
1. Habe ich das Me.Requery durch Me.Dirty=false ersetzt. Nun ist es so, dass beim Anklicken des Button der Fehler angezeigt wird und er das nicht zusammengerechnet hat. Es fehlt weiter der letzte Datensatz in der Summe. Wenn ich den Button danach erneut drücke, funktioniert es.
2. Habe ich nun die Eigenschaft noch an der Stelle
Private Sub GezahlteBewertungsreserve_LostFocus()
Me.Dirty = False
End Sub
angebracht. Das bedeutet nun, dass ich aus der letzten Zeile mit Tab herausgehen muss und nicht über "Enter" den Button direkt auslösen kann. Nach dem heraustabben ist die Summe korrekt, bei Enter leider nicht...
Also brauche ich noch mehr Hilfe... ;)
Okay, total bescheuert...
Ich habe es nun hinbekommen, indem ich eine Zeitverzögerung einbaue...
Hier der Code für Interessierte:
Public Function Wait(MilliSekunden As Double)
Dim I As Double, Ende As Double
Ende = Timer + (MilliSekunden / 1000)
Do While I < Ende
DoEvents
I = Timer
Loop
End Function
Private Sub cmdStart_Click()
Me.Dirty = False
Wait (1000)
If Me.SummeBewertung <> vardoublemarker1 Then
MsgBox "Es wurde eine Gesamtbewertungsreserve " _
& "von " & vardoublemarker1 & " € angegeben. Diese " _
& "weicht von den einzelnen Anteilen um " & Me.SummeBewertung - vardoublemarker1 & " € ab.", 64
Else
DoCmd.Close acForm, Me.Name
End If
End Sub
Vielen Dank trotzdem für die Hilfe...
Hi,
anstelle von einer Zeitverzögerung via Timer etc. könnte auch der Befehl DoEvents helfen.
Hey MaggieMay,
habe es gerade noch mal getestet. Das funktioniert leider nicht... :( Also werde ich beim Timer eben bleiben