Hallo Leute,
ich muss etwas ausholen...
Ich habe ein Formular mit einem Ufo1 und darin ein weiteres Ufo2.
Um einen bestehenden Datensatz für Ufo2 zu bearbeiten, öffne ich das Bearbeitungsformular per Button über folgenden Code:
Private Sub cmdVersicherung_bearbeiten_Click()
If VersicherungsNr <> "" Then
DoCmd.OpenForm "frmVersicherung_Bearbeitung_UFO", , , "VersicherungsNr=" & Me!VersicherungsNr, , acDialog
Else
MsgBox "Es wurde keine Versicherung gewählt.", vbInformation
End If
End Sub
Das funktioniert.
Wenn ich das Formular nun über folgenden Code per Button schließe, kommt das Problem:
Private Sub cmdVersicherung_uebernehmen_Click()
If IsNull(Me!TarifID) Or IsNull(Me!VersicherungssummeEuro) Or IsNull(Me!gültig_ab) Or IsNull(Me!Versicherungsdauer) Then
MsgBox ("Es sind nicht alle Pflichtfelder gefüllt")
Else
DoCmd.RunCommand acCmdSaveRecord
Me!Rechnerischer_Beginn = Rechnungsbeginn(Me.gültig_ab)
DoCmd.Close
Forms!frmMitglieder!frmPferde_UFO!frmVersicherungsinfo_UFO.Requery 'diese Zeile bewirkt auch keine Reaktion
Forms!frmMitglieder!frmPferde_UFO!frmVersicherungsinfo_UFO.SetFocus 'diese Zeile bewirkt keine Reaktion
End If
End Sub
Ich möchte, dass das UFO "Versicherungsinfo_UFO" aktualisiert wird, da sich darin 2 berechnete Textfelder befinden, die auch aktualisiert werden sollen, wie soll das aber gehen?
Diese Textfelder werden über folgenden Sub gefüllt:
Private Sub Form_Current()
If Me.Versicherungsdauer <> "" Then
Me.Versicherungsablauf = AblaufVersicherung(Me.gültig_ab, Me.Versicherungsdauer)
Me.Versicherungsprämie = Format(Praemienermittlung(Me.VersicherungssummeEuro, Me!Prämiensatz, Me.Versicherungsdauer), "####.00") & " €"
Else
Me.Versicherungsablauf = ""
Me.Versicherungsprämie = ""
Exit Sub
End If
End Sub
Die Funkrionen funktionieren dank euerer Hilfe optimal.
1. Muss ich ggf ein anderes Ereignis als form_current nehmen?
2. Wie kann dieses Ufo2 sonst aktualisiert werden?
3. Wie kann ich den Focus wieder auf das Ufo2 setzen? Da sich ein weiterer Button nur mit 2 Klicks ausführen lösst, wobei der erste für den Focus sorgt und der zweite die Aktion ausführt
Hoffe, dass das nicht zu unübersichtlich ist.... ;)
Hallo,
das Unterformular aus dem Hauptformular heraus zu aktualisieren (requery) geht so:
Forms!DeinHauptform!DeinUnterform.Requery
Beachte aber dass mit DeinUnterform der Name des Unterformularsteuerelementes im Hauptformular gemeint ist.
Berechnete Felder werden nur dann aktualisiert wenn die Formel als Datenherkunft steht.
Wenn nicht dann müssen diese separat aktualisiert werden:
Forms!DeinHauptform!DeinUnterform.Forms!BerechnetesSteuerelement.Requery
Gruß Andreas
Leider ändert sich nichts. Liegt es daran, dass ich es immer im Abspann des Buttons geschrieben ist?
Leider bringt auch die geziehlte Aktualisierung des Steuerelements nichts...
Wie bekomme ich sonst ggf. den Focus richtig auf das Ufo gesetzt?
Wenn ich während des Schließens des Bearbeitungsformulars , also nach DoCmd.Close den Focus setze, passiert nichts.
Oder kann man nach close nichts mehr machen?
Was passiert nach dem Schließen der Bearbeitungsmaske mit dem im Hintergrund geöffneten Formular, erhällt es den Focus? Oder was passiert damit, damit man Requery daran koppeln kann.....
Welches Ereignis könnte das Problem lösen??
Keine Antwort?? Bin ich garnicht gewöhnt ??? ???
EDIT:
Detailsformular als Dialog und PopUp geöffnet!
Hallo,
ZitatKeine Antwort?? Bin ich garnicht gewöhnt
tja, sorry, es ist halt nicht IMMER jemand gleich verfügbar ... ;)
Ich glaube dein Problem liegt in der richtigen Form, wie du das/die Steuerelemente im SubForm2 bzw. die SubForm2 selbst ansprichst.
Dabei kommt es auch darauf an von wo aus du das machst, also von der Hauptform aus oder von SubForm1 aus, ...
schau dir bitte mal die Seiten hinter den Links
ganz genau an!
www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2)
http://www.mvps.org/access/forms/frm0031.htm (http://www.mvps.org/access/forms/frm0031.htm)
Zum anderen Problem:
ZitatWenn ich während des Schließens des Bearbeitungsformulars , also nach DoCmd.Close den Focus setze, passiert nichts
Wenn du den Befehl zum Schließen abgesetzt hast geht nix mehr! Du kannst auf einer Form die du meinetwegen per Button-Befehl schließt nichts mehr eintragen / ändern / etc. , das musst du davor machen.
HTH
Peter
Es lag an dieser Zeile:
ZitatForms!frmMitglieder!frmPferde_UFO!frmVersicherungsinfo_UFO.SetFocus 'diese Zeile bewirkt keine Reaktion
Nun habe ich SIe in das Close Ereignis gepackt und mit eckigen Klammern versehen. In etwa so:
Forms![frmMitglieder]![frmPferde_UFO]![frmVersicherungsinfo_UFO].Requery
Trotzdem Danke!!
Hallo,
das Einklammern ist in deinem Fall nicht unbedingt Notwendig, da du keine Leerzeichen und anderes Hinderliches in den Steuerelementnamen verwendest.
Der Grund war der Zeitpunkt des Absetzens dieses Befehls, wie ich bereits in meiner Antwort geschrieben hatte.
Das Schließen eines Formulars über den Close-Befehl und das Close-Ereignis sind 2 unterschiedliche Dinge, wobei jedoch der Befehl DoCmd.Close das Close-Ereignis eines Formulars auslöst.
Somit ist der Unterschied zur vorigen Version klar - Nach dem Absetzen des Close-Befehls kann nichts mehr am Formular oder dessen Daten geändert werden, durch das ausgelöste Close-Ereignis jedoch schon.
LG
Peter