2016-07-02 5 views
1

Ich habe ein ungebundenes Formular, das ein Unterformular enthält. Das Teilformular ist nicht gebunden und wird ausgefüllt, wenn der Benutzer auf eine Schaltfläche im Hauptformular klickt.MS-Access 2007 - Wie programmgesteuert auf Unterformularspalten Daten auf Click-Ereignis zugreifen

Ich möchte in der Lage sein, den Klick selbst auf dem Unterformular grammatisch zu behandeln und die Daten in einer bestimmten Spalte zu erhalten. Wie kann ich das machen? Das gleiche würde man mit VB.NET/C#.NET tun, wenn Sie wissen, was ich meine.

Wenn ich die Registerkarte Eigenschaften des Unterformulars verwende, erhalte ich einen Ausdrucksersteller. Das bringt mich nicht in einen Sub-/Funktions/Formular- oder Modul-VBA-Code-Editor.

Jede Hilfe wird geschätzt.

Bearbeiten - Etwas, das funktioniert hat! Danke für die Hilfe, die ich von den Antworten unten erhielt. Ein Weg, um Spalte in einer ausgewählten Zeile in einem Unterformular zu verweisen ist durch diesen Ausdruck verwendet:

Me!ChildFormName.Form!ColumnNameInSubForm 

EX:

ME!Sales.Form!SalesmanID 

Additional Reference here...

A Problem bei diesem Ansatz ist, dass Die verfügbaren Ereignisse On Enter und On Exit verhalten sich nicht wie "Click" -Ereignisse. Man muss sich aus dem Unterformular heraus fokussieren (indem man auf ein anderes Steuerelement klickt), um entweder ausgelöst zu werden!

Antwort

1

Schauen Sie noch einmal. Das Eigenschaftenblatt hat eine Registerkarte, Ereignisse. Wählen Sie ein beliebiges Ereignis aus und wählen Sie im Drop-down-Menü "Ereignisprozedur" aus, und klicken Sie auf die Auslassungspunkte - damit wird der Code-Editor geöffnet.

+0

Vielen Dank für Ihre Hilfe. Ja, es gibt Text [Ereignisprozedur]. Wenn ich irgendeinen Namen dort eintippe und zu dem Code gehe, bekomme ich keinen Ereignishandler, der im Code erstellt wird. Was schlagen Sie vor, damit ich den Ereignishandler im Code erstellen kann? (wie C#/VB)? Danke. – NoChance

+1

Sie geben keinen Text ein. Sie klicken auf die Ellipse und erreichen den Event-Handler, den Sie eingeben.Der Name der Unterfunktion folgt dem Namen des Steuerelements. – Gustav

+0

Ja, Sie haben Recht. Ich habe den Handler erstellt :) - Wie kann ich auf die ausgewählten Zeilendaten zugreifen? Entschuldigung, so viele Fragen von dir zu stellen! – NoChance

1

Siehe Subformular Steuerform Hauptform Ereignishandler (VBA Sub):

Me!Subform1.Form!ControlName 

Me ist selbst Bezug auf die Hauptform, Subform1 ist die Steuerung der Unterform enthält, Form ist ein Verweis auf das Unterformular, und ist ein Verweis auf das Feld auf dem Unterformular. ! ist eine kurze Möglichkeit, auf ein Steuerelement in der contrls Auflistung eines Formulars zu verweisen.
ein längerer Weg die oben zu schreiben wären: Me.contrls("Subform1").Form.Contrls("ControlName")

zu einer Hauptform-Steuer Siehe eine Unterform Ereignishandler (VBA Sub) Form:

Me.Parent!ControlName 

Me ist selbst Bezug auf den Unter -form, Parent ist eine Referenz auf das Hauptformular, undist ein Verweis auf das Feld auf dem Hauptformular.
Eine längere Weise die oben zu schreiben wäre: Me.Parent.Contrls("ControlName")

Bitte mehr zum Thema in this link sehen.

+0

Danke für Ihre Hilfe. Ich muss auf die ausgewählten Zeilenspalten vom Unterformular aus zugreifen können. Wenn ich ME! SubformName.RecordSource versuche, bekomme ich "Objekt unterstützt keine Eigenschaft"! Außerdem funktioniert die Verwendung von ME! SubformName.Value nicht, da Value keine Eigenschaft ist. – NoChance

+0

Versuchen Sie 'ME! SubformName.Form.RecordSource'. 'ME! SubformName' ist ein Steuerelement im Hauptformular,' ME! SubformName.Form' ist ein Verweis auf das tatsächliche Unterformular. – marlan

+1

Großartig! es ist nicht anders, es ist genau so: 'Ich! Unterform1.Form! KontrollName'. 'Subform1' heißt' ChildFormName' und 'ControlName' ist das, was Sie' ColumnNameInSubForm' genannt haben;) – marlan

Verwandte Themen