2010-11-29 2 views
4

Gibt es eine Möglichkeit programmgesteuert ein Unterformular zu einem Formular hinzuzufügen, das Access VBA verwendet? Ich habe eine temporäre Tabelle, die dynamisch generiert wird, wenn sie vom Benutzer angefordert wird. Wenn möglich, möchte ich ein Formular basierend auf der temporären Tabelle erstellen und es als Unterformular zu einem bereits vorhandenen Formular hinzufügen.MS Access: So fügen Sie programmgesteuert ein Unterformular hinzu

+1

Warum? Warum nicht ein vorhandenes Teilformular verwenden und die Recordsource und die Felder ändern, an die die Steuerelemente zur Laufzeit gebunden sind? Designänderungen in einer Produktions-App sind meiner Meinung nach ein wirklich amateurhafter Weg. –

+1

Sie müssen das Design nicht ändern, um ein Quellobjekt festzulegen, es kann zur Laufzeit ausgeführt werden, und ein Unterformularsteuerelement zeigt eine Tabelle oder Abfrage genauso an wie ein Formular. – Fionnuala

+0

Und in diesem Fall kann es irgendwo zwischen 3 und 50+ Felder geben - Unnötige Überfüllung des Formulars mit 50+ statischen Feldern, wenn der Benutzer nur nach 3 Marken für eine schlechte Benutzerschnittstelle fragt. – Adam

Antwort

4

Die beste Wette besteht darin, das Teilformularsteuerelement zu erstellen und das Quellobjekt entweder auf eine Tabelle oder eine Abfrage zu setzen.

Me.NameOfSubformControl.SourceObject = "Query.Query1" 
Me.NameOfSubformControl.SourceObject = "Table.Temp" 

Es ist auch möglich, die SQL einer gespeicherten Abfrage zu aktualisieren, um die neue temporäre Tabelle zu verweisen.

+1

@ David-W-Fenton Warum? Sie legen die Quelle für eine Tabelle oder Abfrage und kein Formular fest, sodass die Steuerelemente nicht relevant sind. Ich fürchte, was Sie sagen, ist nicht wahr. – Fionnuala

+1

Das scheint sehr gut zu funktionieren. Keine Notwendigkeit, mit irgendwelchen Kontrollen in diesem Fall zu täuschen. – JeffO

+0

ich falsch gelesen. Sie schlagen vor, das SourceObject des Unterformulars zu setzen (was Sie natürlich gesagt haben, aber ich habe es nicht sorgfältig gelesen). Ich lösche den Kommentar. –