Hallo an die Expertenrunde,
ich habe ein Problem mit dem Zugriff auf ein Control (hier ein KombiListenfeld) im Unterformular.
Me.frm_tst_UF.Form.<Control>
VBA sollte doch normalerweise das Control im UFO per Autocompl. finden, tut es aber nicht.
Trage ich die Bezeichnung von Hand ein:
Me![frm_tst_UF].Form![Kombi2].RecordSource = SQL
dann gibt es einen LZF: 438 Objekt unterstützt diese Eigenschaft oder Methode nicht :'(
Um es nachzustellen, habe ich eine kleine Test-DB erstellt, nur mit den benötigten Elementen. Ich bin ratlos. Das hat bisher immer funktioniert, hat sich das mit der Version 2016 geändert?
Ich hoffe, ihr könnt mir helfen.
aktuelle Version: Access 2016
Gruß
Fabian
Hallo Fabian,
Vermutlich wird dir dieses (http://www.donkarl.com?FAQ4.2) helfen.
gruss ekkehard
Hallo,
Me![frm_tst_UF].Form![Kombi2].RowSource = SQL
Uuups, sch... gefilterte Wahrnehmung.
Zitat von: DF6GL am April 26, 2021, 09:58:13Me![frm_tst_UF].Form![Kombi2].RowSource = SQL
Ja natürlich, blöder Schreibfehler, manchmal ist man einfach nur betriebsblind. Der LZF ist damit behoben, vielen Dank.
Aber genau das meine ich ja, wieso wird das Control beim Schreiben im VBA Editor nicht angezeigt? Dadurch werden die Methoden/Eigenschaften nicht aufgelistet und es passieren dann eben solche Sachen.
Woran liegt das? Oder ist das Just as Designed?
Der Bang-Operator (!) ist kein Mittel, um mit der IntelliSense zu schreiben.
Zitat von: qaudtc am April 26, 2021, 11:13:03Aber genau das meine ich ja, wieso wird das Control beim Schreiben im VBA Editor nicht angezeigt?
1.) Wegen der verkürzten Schreibweise mit dem Bang(!)-Operator, der erst zur Laufzeit ausgewertet wird.
2.) Weil die Eigenschaft
Form eines
SubForm-Controls ein generisches
Access.
Form-Objekt zurückliefert und nicht dein konkretes Form mit deinen Steuerelementen.
Zitat von: qaudtc am April 26, 2021, 11:13:03Oder ist das Just as Designed?
Den Grund hat der PhilS ja schon genannt.
Da ich das auch nicht mag, habe ich mir einen kleinen workaround überlegt, damit ich mit der Intellisense arbeiten kann.
Ich verwende eine Property, die mir eine typisierte Referenz liefert.
Property get SF() AS Form_MyFormName
Set SF = Me.SubformControl.Form
End Property
Dann kannst du überall im Code mit der SF Property arbeiten.
SF.Kombi2.RowSource = SQL
oder
with SF
.Kombi2.RowSource = SQL
end with
Vielen Dank für die Erklärung, das leuchtet natürlich ein.
Das Problem wäre damit gelöst.
Super Tip mit der indirekten Zuweisung, den probiere ich gleich aus.
Wieder mal was gelernt :) Es lebe das Forum!
Gruß
Fabian