Objekt Listenfeld aktualisieren (Access)

Neuling001, Samstag, 04.01.2020, 13:59 (vor 190 Tagen)

Ich versteh's nicht:
um ein Listenfeld zu aktualisieren habe ich einen Button im Formular mit dem Befehl
Me.lbInfoAll.Requery
angelegt und nach Eingabe einer neuen Info (in einer anderen Form) und Klick auf den Btn klappt das ganz gut.
Nun wollte ich das Aktualisieren automatisieren indem ich diesen Befehl in jene Przedur einbaute in dem die andere Form zum Eingeben der neuen Ifnfo aufgerufen wird
Private Sub btnNewInfo_Click()
'ruft die Form zur Neueingabe auf
DoCmd.OpenForm "frmInfoNeu", , acNormal
'aktualisiert Listenfeld
Me.lbInfoAll.Requery
End Sub

Doch da passiert nichts!
Hab ich einen Denkfehler im Programmablauf?
Bin dankbar für Eure Hilfe

Objekt Listenfeld aktualisieren

Martin Asal @, Montag, 06.01.2020, 13:00 (vor 188 Tagen) @ Neuling001

Hab ich einen Denkfehler im Programmablauf?

Ja.

So, Frage beantwortet, und tschüss.

:-D

Ok, jetzt im Ernst weiter: "btnNewInfo" steckt ja in einem anderen Form als "lbInfoAll". Daher kann die Zeile

Me.lbInfoAll.Requery

nicht funktionieren, denn das "Me" bezieht sich ja auf das Form von "btnNewInfo". Es müsste mit

Forms("frmInfoNeu").lbInfoAll.Requery

klappen.

Martin

Objekt Listenfeld aktualisieren

Neuling001, Montag, 06.01.2020, 21:38 (vor 188 Tagen) @ Martin Asal

Hallo Martin,
ich dürfte mich nicht korrekt mitgeteilt haben:
In dem Formular mit der lbInfoAll sind der Btn zum Aufruf der NeueInfo-Form
Im selben Formular ist auch ein Btn zum Aktualisieren der lbInfoAll.
Nach Eingabe einer neuen Info und nach dem Zurückkehren zur Ursprungsform (mit den Btn und lbInfoAll), muss ich immer den Btn AllInfos, damit die zuletzt hinzugefügte Info angezeigt wird.

Private Sub btnAllInfos_Click()
'Liste aktualisieren
Me.lbInfoAll.Requery

End Sub

Ich dachte, wenn ich die Zeile Me.lbInfoAll.Requery in die Procedure zum Öffnen der InfoNeu-Form ans Ende hinzufüge wird der Befehl ausgeführt.

Private Sub btnNewInfo_Click()
'InfoNeuForm aufrufen
DoCmd.OpenForm "frmInfoNeu", , acNormal
'ListBox aktualisieren
Me.lbInfoAll.Requery
End Sub

Aber offensichtlich springt VBA nicht in dieselbe Prcedure zurück von wo der andere Dialog aufgerufen wurde.

Aber in welches Form-Ereignis müsste die Requery-Zeile um das Listfeld zu aktualisieren?

Objekt Listenfeld aktualisieren

PhilS ⌂, Dienstag, 07.01.2020, 09:49 (vor 187 Tagen) @ Neuling001

Aber offensichtlich springt VBA nicht in dieselbe Prcedure zurück von wo der andere Dialog aufgerufen wurde.

Dialog ist das Schlüsselwort hier. Das schreibst du in deiner Erklärung, aber nicht im Programmcode.
Im Moment wird das Formular frmInfoNeu geöffnet und dann sofort deine lbInfoAll aktualisiert, bevor du eine Änderung vorgenommen hast.

Wenn dein Code warten soll, bis das Form frmInfoNeu geschlossen ist, musst du es explizit als Dialog öffnen.

DoCmd.OpenForm "frmInfoNeu", , acNormal, , , acDialog

Objekt Listenfeld aktualisieren

Neuling001, Samstag, 11.01.2020, 10:11 (vor 183 Tagen) @ PhilS

Hallo PhilS!
Danke für den Hinweis. Ich dachte acNormal würde als Aufruf genügen, in Deiner Antwort hätte ich also das acDialog mitangeben müssen?
Leider ist die Hilfe (F1) in VBA nicht besonders aufschlußreich.

Vielen Dank

Objekt Listenfeld aktualisieren

PhilS ⌂, Montag, 13.01.2020, 15:42 (vor 181 Tagen) @ Neuling001

Danke für den Hinweis. Ich dachte acNormal würde als Aufruf genügen, in Deiner Antwort hätte ich also das acDialog mitangeben müssen?

Ja, genau, der WindowMode acDialog sorgt dafür, dass der aufrufende Code angehalten wird, bis das Dialogformular geschlossen wird.

RSS-Feed dieser Diskussion
powered by my little forum