Wie kann ich die Referenz der aktuellen form in einen Ausdruck in Microsoft Access?
Ich bin kein Access-Experte, und ich habe ein (hoffe ich!) einfache Frage...
Ich habe ein Formular mit einer Anzahl von Datensätzen. In einige Textfelder, die ich nur Werte aus der zugrunde liegenden Tabelle - so sind Sie verpflichtet, die entsprechenden Felder ein.
Aber einige Textfelder enthalten berechnete Werte. Einige Berechnungen sind kompliziert und beinhaltet viele Felder aus der Tabelle. Ich Schreibe die Berechnung als eine VBA-Funktion. Ich könnte geben Sie so etwas wie "Kontrolle Quelle":
=MyFunction([Field1], [Field2], [Field3] ...)
Aber ich will keine Liste mit Dutzenden von Feldern in der Funktion nennen. Stattdessen möchte ich das ganze schicken form (oder der aktuelle Datensatz) als parameter, und lassen Sie die Funktion auf die Felder verweisen, die es braucht. Kann ich es so machen:
=MyFunction([Forms]![MyForm])
Aber ich mag es nicht, um den Namen der form in dem Aufruf. Gibt es nicht eine Möglichkeit zum senden der "derzeitigen form" als Funktionsargument? In VBA verwenden Sie einfach das "Me" - Schlüsselwort, für exampel "Mich![Feld1]". Aber es scheint, wie "Mich" nicht akzeptiert in einem Ausdruck.
Gibt es eine andere Möglichkeit zum verweisen auf die aktuelle form in einem Ausdruck?
(Es ist eine kosmetische Frage, ich weiß. Aber es ist nicht gut programmiert ist, zu verwenden "[Form]![Meinformular]". Später kopieren Sie die Steuerelemente in einem anderen Formular und vergessen den Namen zu ändern in den Ausdruck...)
Dankbar für Eure Hilfe! 🙂
/Anders
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
Würde der code sein:
"ich" kann nur aufgerufen werden, innerhalb des entsprechenden Formular-Objekt, (dh in der Objekt-Prozeduren, Funktionen und Ereignisse).
Meine Lieblings-Weg zu finden, um die aktuelle form ist der Aufruf der Bildschirm.activeForm-Objekt...
Natürlich können Sie das form-Objekt eine benutzerdefinierte Funktion
Oder Sie könnten bauen ein Benutzer-definiertes Objekt. Die benötigten Felder könnten dann als interne Eigenschaften, stellen in der sub Class_Initialize des entsprechenden Objekts.
Screen.ActiveForm.Name
verwendet werden können, in eine Globale Funktion! Vielen Dank dafür!Wenn Sie mithilfe von code in der form, dann "ich" - Referenz auf das aktuelle Formular. So
Jedoch, "ich" kann nicht verwendet werden, die im Kontext eines Ausdrucks, der gebunden ist, um ein Textfeld.
In diesem Fall können Sie entweder abholen der aktuelle Bildschirm in die routine mit Bildschirm.activeform wie vorgeschlagen.
Oft gehe ich:
=AFunction([Form])
können sehr nützlich sein. Es ist besonders nützlich, wenn Sie möchten, Ausschneiden und einfügen eines Steuerelements an mehrere Formen. Ich glaube, es ist diese Funktion, dass die OP wurde in Erwägung.Ich benutze diese, wenn ich möchte das aktuelle Unterformular (oder Formular aus, wenn nicht gerade in einem Unterformular), weil mit
Screen.ActiveForm
nicht die aktuelle Unterformular, sondern nur das Formular mit dem Unterformular. Bitte seien Sie sich bewusst von Ihrem Kontext, wenn sich das Steuerelement in einem Registersteuerelement, dann seine Eltern wird das Register-Steuerelement und nicht die form.In ACC2013 ich nicht nutzen konnte fionnuala's Antwort. Also wechselte ich zu:
Event-handler im Eigenschaft-Fenster:
Mein code wäre: