Forum des VBA-Tutorials

Datensatzquelle von Subsubform aktualisieren (VBA)

Nikno, Freitag, 10. Februar 2017, 11:35 (vor 189 Tagen)

Hallo,

ich versuche gerade die Datensatzquelle eines Unterformulars meines Unterformulars zu aktualisieren. Leider erhalte ich da den Fehler 2455.

Me!subfrmSearchMask.Form!subsubfrmSearchMask.Form.RecordSource = sql

Warum geht das nicht?

Die Datensatzherkunft des Unterformulars subfrmSearchMask kann ich problemlos ändern.

Datensatzquelle von Subsubform aktualisieren

PhilS ⌂, Freitag, 10. Februar 2017, 11:50 (vor 189 Tagen) @ Nikno

ich versuche gerade die Datensatzquelle eines Unterformulars meines Unterformulars zu aktualisieren. Leider erhalte ich da den Fehler 2455.

Überprüf mal ob die Steuerelementnamen der Unterformular-Steuerelemente so wirklich korrekt sind. Der Fehler deutet darauf hin, dass das nicht so ist.

Datensatzquelle von Subsubform aktualisieren

Nikno, Freitag, 10. Februar 2017, 12:56 (vor 189 Tagen) @ PhilS

Die Namen sind leider korrekt, das Unterformular in subfrmSearchMask heißt subsubfrmSearchMask.
Macht es was aus, dass das Ursprungsformular gleich heißt wie das eingebundene Steuerelement?

Datensatzquelle von Subsubform aktualisieren

PhilS ⌂, Samstag, 11. Februar 2017, 16:10 (vor 188 Tagen) @ Nikno

Macht es was aus, dass das Ursprungsformular gleich heißt wie das eingebundene Steuerelement?

Kann ich nicht mir Sicherheit sagen. Ich vermeide es schon sehr lange, Unterformulare und Ufo-Steuerlemente gleich zu benennen. Probier es doch am besten aus.

Datensatzquelle von Subsubform aktualisieren

Nikno, Montag, 13. Februar 2017, 07:55 (vor 187 Tagen) @ PhilS

Oh irgendwie hat das Forum meine Antwort verschluckt.

Ich habe das Problem hiergefunden.

Wenn ich irgendeine der Zeilen aufklappe, dann funktioniert der Code, allerdings nur für die erste Zeile des Unterformulars, egal welche oder wie viele ich aufklappe.

Ich verstehe die Logik dahinter irgendwie nicht ganz, es kann ja nicht so schwer sein ein verschachteltes Formular zu filtern.

Datensatzquelle von Subsubform aktualisieren

PhilS ⌂, Montag, 13. Februar 2017, 10:35 (vor 186 Tagen) @ Nikno

Wenn ich irgendeine der Zeilen aufklappe, dann funktioniert der Code, allerdings nur für die erste Zeile des Unterformulars, egal welche oder wie viele ich aufklappe.

Ich verstehe die Logik dahinter irgendwie nicht ganz, es kann ja nicht so schwer sein ein verschachteltes Formular zu filtern.

Um das grundsätzliche Problem zu verstehen, solltest du mal (zu Lernzwecken) ein Formular erstellen, dass nicht erlaubt neue Datensätze anzufügen (AllowAddition=False) und dessen Recordsource keine Datensätze liefert (...WHERE 0=1).

Das obige Formular ist komplett grau und enthält keine Steuerelemente! Folglich kommt es zu einem Fehler, wenn du auf einzelne Steuerelemente zugreifen willst, weil diese ohne Daten nicht existieren.

In einem solchen Fall müsstest du deinen Code nur dann ausführen, wenn auch Daten in den jeweiligen Formularen angezeigt werden (Recordcount >0). Und das ggfls. nicht einmalig im Load/Open-Event, sondern immer, wenn sich die Datenherkunft ändert.


Deine konkrete Fehlerbeschreibung bzgl. Zeilen des Unterformulars und Aufklappen derselben, verstehe ich nicht ganz.

Grundsätzlich der Hinweis, dass in einem Endlosformular die Steuerelement-Eigenschaften immer für alle Datensätze gelten. - Evtl. hilft das in deinem konkreten Fall weiter.

Datensatzquelle von Subsubform aktualisieren

Nikno, Montag, 13. Februar 2017, 10:46 (vor 186 Tagen) @ PhilS

Mein Problem bezieht sich ja aber auf Unter-Unterformulare, nicht nur auf Ufos.

Wenn man in einem Unterformular ein Unterformular einbindet, und beide auf Datenblattansicht einstellt, generiert Access daraus auf dem Hauptformular ein Datenblatt, dass man zeilenweise auf-/zuklappen kann. (Bild aus Google)

Wenn alle Zeilen reduziert sind, dann ist für Access das Unterunterformular geschlossen und es kommt zum Fehler, so viel hab ich ja jetzt herausgefunden. Sobald eine Zeile aufgeklappt wird, läuft der Code. Aber das Problem: Der Code funktioniert ausschließlich für die erste Zeile des Unterformulars.

Ich möchte ja jetzt Access dazu kriegen, den Code für jede verschachtelte Zeile auszuführen, da liegt mein Problem. Wenn Access den Code nur für die erste Zeile ausführt, muss ich ja irgendwie alle Instanzen des Unterunterformulars erreichen. Ich verstehe allerdings nicht, was Access da tut.

Datensatzquelle von Subsubform aktualisieren

Nikno, Montag, 13. Februar 2017, 15:57 (vor 186 Tagen) @ Nikno

Ich habe das Problem jetzt gelöst, indem ich statt die Datenquelle zu ändern die Felder "Verknüpfen von/nach" mit den Filterkriterien benutzt habe, mich würde allerdings trotzdem interessieren, wie das mit Code funktionieren würde.

Datensatzquelle von Subsubform aktualisieren

PhilS ⌂, Montag, 13. Februar 2017, 17:09 (vor 186 Tagen) @ Nikno

Ich habe das Problem jetzt gelöst, indem ich statt die Datenquelle zu ändern die Felder "Verknüpfen von/nach" mit den Filterkriterien benutzt habe, mich würde allerdings trotzdem interessieren, wie das mit Code funktionieren würde.

Du kannst auch die von dir genannten Verknüpfungsfelder per Code ändern (LinkMasterFields/LinkChildFields).

Eine Änderung über die Recordsource funktioniert nur sehr schlecht (order gar nicht).
Diese greift für die Unterformulare in allen Datensätzen. Sie wäre also immer nur für einen Datenstz richtig und für die anderen falsch.

RSS-Feed dieser Diskussion
powered by my little forum