Hallo Leute,
ich habe mal wieder ein Problem. Ich habe ein Formular mit einem Unterformular. Wenn ich im Unterformular etwas gemacht habe und das übergeordnete Formular aktualisiere:
If CurrentProject.AllForms("frmRechnungen_UFO").IsLoaded = True Then
Me.Parent.Requery
End If
soll sich das Feld Me.txtRestforderung aktualisieren. Es handelt sich um ein ungebundenes Textfeld, dass folgendermaßen im übergeordneten Formular gefüllt wird:
Private Sub Form_Current()
If Not IsNull(Me.RechnungsNr) Then
If Not IsNull(Me.Stornodatum) Then
Me.txtRestforderung = Format(0, "##0.00") & " €"
ElseIf Me.Mahnung = True Then
Dim rechner As Double
rechner = 0
If Not Receivable(3, Me.RechnungsNr, Me.MitgliedsNr) = falsch Then
rechner = Receivable(3, Me.RechnungsNr, Me.MitgliedsNr)
End If
rechner = rechner + Receivable(4, Me.RechnungsNr, Me.MitgliedsNr)
rechner = rechner + (Receivable(2, Me.RechnungsNr, Me.MitgliedsNr) / 100 * 119)
Me.txtRestforderung = Format(rechner, "##0.00") & " €"
Else
Me.txtRestforderung = Format(Receivable(1, Me.RechnungsNr, Me.MitgliedsNr) / 100 * 119, "##0.00") & " €"
End If
Else
Me.txtRestforderung = Format(0, "##0.00") & " €"
End If
End Sub
Ich habe auch schon "Form_AfterUpdate" probiert, aber auch das geht nicht. Wie bekomme ich dieses Feld da oben im oberen Formular aktualisiert, bzw. neu berechnet??? Oder wie funktioniert die Aktualisierung richtig und gehe ich in dem übergeordneten Formualr wieder zu diesem DS?
Wenn ich nur in dem übergeordneten Formuar etwas bearbeite und Me.Requery anwende und wieder zum bearbeiteten Datensatz gehe, funktioniert es.
Hallo,
wandel deine Prozedur in eine ungebundene ab. so etwar
Private Sub BERECHNUNG_AUSFÜHREN()
If Not IsNull(Forms!Parent!RechnungsNr) Then
If Not IsNull(Forms!Parent!.Stornodatum) Then
Forms!Parent!.txtRestforderung = Format(0, "##0.00") & " €"
ElseIf Forms!Parent!.Mahnung = True Then
Dim rechner As Double
rechner = 0
If Not Receivable(3, Forms!Parent!.RechnungsNr, Forms!Parent!.MitgliedsNr) = falsch Then
rechner = Receivable(3, Forms!Parent!.RechnungsNr, Forms!Parent!.MitgliedsNr)
End If
rechner = rechner + Receivable(4, Forms!Parent!.RechnungsNr, Forms!Parent!.MitgliedsNr)
rechner = rechner + (Receivable(2, Forms!Parent!.RechnungsNr, Forms!Parent!.MitgliedsNr) / 100 * 119)
Forms!Parent!.txtRestforderung = Format(rechner, "##0.00") & " €"
Else
Forms!Parent!.txtRestforderung = Format(Receivable(1, Forms!Parent!.RechnungsNr, Forms!Parent!.MitgliedsNr) / 100 * 119, "##0.00") & " €"
End If
Else
Forms!Parent!.txtRestforderung = Format(0, "##0.00") & " €"
End If
End Sub
Wenn du jetzt bei
If CurrentProject.AllForms("frmRechnungen_UFO").IsLoaded = True Then
BERECHNUNG_AUSFÜHREN
End If
eingibst, dann sollte es laufen.
vielen Dank zunächst. Aber leider funktioniert die Abfrage nicht, ob das übergeordnete Formular auch geöffnet ist. Was mache ich mit dem falsch:
If CurrentProject.AllForms("frmRechnungen_UFO").IsLoaded = True Then
BERECHNUNG_AUSFÜHREN
End If
in frmRechnungen_UFO ist frmMahnungen_UFO als Unterformular enthalten. Was ich hier mache ist bei einer Aktion im Mahnungen-UFO im übergeordneten das aktualisieren, wenn dieses geöffnet ist, da natürlich sonst ein Fehler auftritt, falls man das Mahungen-Ufo alleine öffnen sollte...
tschuldigung!
ich habe den Formularnamen falsch gelesen. Muss so aussehen:
Private Sub BERECHNUNG_AUSFÜHREN()
If Not IsNull(Forms!frmRechnungen_UFO!RechnungsNr) Then
If Not IsNull(Forms!frmRechnungen_UFO !Stornodatum) Then
Forms!frmRechnungen_UFO !txtRestforderung = Format(0, "##0.00") & " €"
ElseIf Forms!frmRechnungen_UFO !Mahnung = True Then
Dim rechner As Double
rechner = 0
If Not Receivable(3, Forms!frmRechnungen_UFO !RechnungsNr, Forms!Parent!MitgliedsNr) = falsch Then
rechner = Receivable(3, Forms!frmRechnungen_UFO! RechnungsNr, Forms!frmRechnungen_UFO !MitgliedsNr)
End If
rechner = rechner + Receivable(4, Forms!frmRechnungen_UFO !RechnungsNr, Forms!frmRechnungen_UFO !MitgliedsNr)
rechner = rechner + (Receivable(2, Forms!frmRechnungen_UFO !RechnungsNr, Forms!frmRechnungen_UFO !MitgliedsNr) / 100 * 119)
Forms!frmRechnungen_UFO !txtRestforderung = Format(rechner, "##0.00") & " €"
Else
Forms!frmRechnungen_UFO !txtRestforderung = Format(Receivable(1, Forms!frmRechnungen_UFO !RechnungsNr, _
Forms!frmRechnungen_UFO !MitgliedsNr) / 100 * 119, "##0.00") & " €"
End If
Else
Forms!frmRechnungen_UFO !txtRestforderung = Format(0, "##0.00") & " €"
End If
End Sub
Hallo,
naja, ob das so aussehen muss, lass ich mal dahingestellt.... ;)
Im Unterform und ohne Kenntnis der Receivable-Funktion:
Sub Form_Afterupdate()
Dim rechner As Currency
rechner = 0
If Not IsNull(Me.Parent!RechnungsNr) Then
If Not IsNull(Me.Parent!Stornodatum) Then
Me!txtRestforderung = Format(0, "0.00 €") 'es könnte gleich das Textfeld mit einer Formatangabe versehen werden.
ElseIf Me.Parent!Mahnung Then
If Receivable(3, Me.Parent!RechnungsNr, Me.Parent!MitgliedsNr) = 0 Then ' Wenn diese "Vergleichs-Logik" überhaupt stimmt....
rechner = Receivable(3, Me!RechnungsNr, Me!MitgliedsNr)
End If
rechner = rechner + Receivable(4, Me.Parent!RechnungsNr, Me.Parent!MitgliedsNr)
rechner = rechner + Receivable(2, Me.Parent!RechnungsNr, Me.Parent!MitgliedsNr) *1.19
Me.Parent!txtRestforderung = Format(rechner, "0.00 €")
Else
Me.Parent!txtRestforderung = Format(Receivable(1, Me.Parent!RechnungsNr, Me.Parent!MitgliedsNr) * 1.19 , "0.00 €")
End If
Else
Me.Parent!txtRestforderung = Format(0, "0.00 €")
End If
End Sub
geht nun, danke...
das mit der Vergleichslogik ging, wie oben, da ich in der Funktion Receivable Null zurückgebe...