Wie requery Unterformular aus einem anderen Formular?
Ich habe zu kämpfen mit diesem problem auf eigene Faust, dann mit etwas Hilfe, dann Suche über es; aber ich habe nicht hatte kein Glück. Also beschloss ich zu Fragen.
Ich habe zwei Formulare in Access 2007 können nennen Sie MainForm
und EntryForm
.
MainForm
hat ein Unterformular und einen button. Die Schaltfläche öffnet die EntryForm
im Add-Modus. Was ich will zu tun ist, wenn die EntryForm
speichert den neuen Datensatz es aktualisieren würde (requery) des Unterformulars in MainForm
.
Ich habe versucht, das setup-code
Private Sub cmdSaveAndClose_Click()
DoCmd.Save
'requery list
Forms![MainForm]![subformName].Requery
'' I've also tried these
'Forms![MainForm]![subformName].Form.Requery
'Forms.("MainForm").[subformName].Requery
'Forms.("MainForm").[subformName].Form.Requery
DoCmd.Close
End Sub
Keiner dieser versuche scheint zu funktionieren. Gibt es einen Weg, dieses requery?
Vielen Dank für die Hilfe im Voraus.
- Was bedeutet das Unterformular anzuzeigen? Eine listbox, die Daten aus der Add/Edit-Formular?
- das Unterformular zeigt die Datensätze aus der add/edit-Formular in einer Tabelle
- docmd.speichern speichert das Objekt und nicht den Datensatz, den Sie wirklich wollen, 'Wenn Nicht Mir.Dirty Dann DoCmd.RunCommand acCmdSaveRecord'
- Allen Browne (allenbrowne.com/bug-01.html) schlägt Mich.Dirty = False
- für die Seite mit den bug und die Seite des Tipps, sich selbst!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur einen Kommentar über die Methode, dies zu erreichen:
Machen Sie Ihre EntryForm dauerhaft gebunden an die form, die Sie aufrufen aus. Ich denke es ist besser, keine Formen gebunden an Kontext, wie die. Würde ich entfernen Sie die requery-von der Speichern/Schließen routine und öffnen Sie stattdessen die EntryForm Modal, mit dem acDialog Schalter:
So, EntryForm ist nicht gebunden an die Verwendung in einem Kontext. Die alternative ist, zu erschweren, EntryForm mit etwas, das kenntnisreich die form geöffnet und was muss erneut abgefragt. Ich denke, es ist besser, zu halten diese Art der Sache, als in der Nähe der Kontext, in dem es verwendet wird, und halten des genannten Formulars code so einfach wie möglich.
Vielleicht ein Prinzip dabei ist, dass jedes mal wenn du erneutes Abfragen einem Formular mit der Forms-Auflistung aus einem anderen Formular, es ist ein guter Hinweis, etwas ist nicht Recht, über Ihre Architektur -- sollte das passieren, selten, meiner Meinung nach.
Müssen Sie den Namen des Unterformular-Steuerelements, nicht der name des Unterformulars, obwohl diese oft die gleichen:
Oder, wenn Sie sind auf der main-form:
Mehr Info: http://www.mvps.org/access/forms/frm0031.htm
Forms![MainForm]![subformControl].Form.Requery
und es nicht requery des Unterformulars. T Der code ist gebunden an das andere Formular-button. Es sei denn, es ist ein Weg, um requery des Unterformulars von der übergeordneten form, wenn das andere Formular geschlossen ist, kann ich nicht versuchen Sie höher syntax.Ich habe versucht, mehrere Lösungen vor, aber keine die mein problem gelöst.
Lösung aktualisieren Sie ein Unterformular in einem Formular nach dem speichern der Daten in die Datenbank:
Mir.subformname.Requery
Es funktionierte gut für mich. Viel Glück.
Öffnen und schließen, um die wichtigste form verläuft in der Regel alle zugehörigen Abfragen (einschließlich des Unterformular-verwandten). Ich hatte ein ähnliches problem und es behoben, indem Sie die folgenden Befehl "Speichern" - Schaltfläche beim klicken-Ereignis.
Ich hatte ein ähnliches Problem, aber mit einigen unterschieden...
In meinem Fall, mein Hauptformular hat ein Steuerelement (Verkäufer) dem Wert, den ich verwendet, um zu aktualisieren Sie eine Abfrage in meiner DB, mit dem folgenden code:
Seit Anfang an mein Unterformular Datensatz-Quelle wurde die Abfrage mit dem Namen "Qry_Pedidos realizados e importados".
Aber der einzige Weg, ich könnte die Aktualisierung der Unterformular-Daten innerhalb der Haupt-form-Kontext war zum aktualisieren der Datenquelle des Unterformulars, um es sich selbst, wie geschrieben unten:
Kein refresh, umrechnen, requery, etc. wurde notwendig, nachdem alle...
Gerade entdeckt, dass wenn die Quell-Tabelle für das Unterformular wird aktualisiert mit adodb, dauert es eine Weile, bis die requery-finden Sie die aktualisierte Informationen.
In meinem Fall, ich war das hinzufügen einige Datensätze mit 'dbconn.execute "sql", und fragte sich, warum die requery-Befehl in vba nicht zu funktionieren scheint. Wenn ich Debuggen, das requery funktioniert. Hinzugefügt, 2-3 Sekunden warten, den code vor dem requery nur zu testen, einen Unterschied gemacht.
Doch der Wechsel zu 'currentdb.execute "sql" ' behoben das problem sofort.
Alle Steuerelemente sind gehören zu uns!
Fionnuala beantwortet diese korrekt, aber Skimmer wie ich es leicht finden würde den Punkt verfehlen.
Sie nicht aktualisieren Sie das Unterformular aktualisieren Sie das Unterformular-STEUERELEMENT. In der Tat, wenn Sie überprüfen Sie mit allforms() des Unterformulars ist auch nicht geladen, soweit der Zugriff betroffen ist.
Auf dem Hauptformular sehen Sie auf dem Aufkleber des Unterformular-Assistenten zur Verfügung gestellt, oder wählen Sie das Unterformular, indem Sie einmal oder an der Grenze um ihn herum und betrachten Sie die "caption" in der "Anderen" - Reiter im Eigenschaften. Das ist der name, den Sie verwenden, für erneutes Abfragen, nicht der name des Formulars, erscheint in der Navigationsleiste.
In meinem Fall hatte ich ein Unterformular namens frmInvProdSub und ich habe versucht, für viele Stunden, um herauszufinden, warum der Zugriff nicht denke, dass es existierte. Ich gab auf, löschte die form und neu erstellt, es. Der Letzte Schritt ist, zu sagen was Sie wollen, rufen Sie die Kontrolle, so dass ich nannte es frmInvProdSub und beendet den Assistenten. Dann habe ich versucht, und voila, es funktionierte!
Wenn ich schaute auf den Namen des Formulars in der navigation Fenster, ich merkte, ich hatte vergessen zu setzen "Sub" im Namen! Das ist, wenn es angeklickt wird. Das STEUERELEMENT aufgerufen frmInvProdSub, nicht in der form und mit den Namen des Steuerelements funktioniert.
Natürlich, wenn beide Namen identisch sind, dann sind Sie nicht dieses problem haben lol.