Ich bin kein Access-Experte, und ich habe eine (ich hoffe!) einfache Frage ...
Ich habe ein Formular mit einer Anzahl von Datensätzen. In einigen Textfeldern zeige ich nur Werte aus der zugrunde liegenden Tabelle an - sie sind also an die entsprechenden Felder gebunden.
Aber einige Textfelder sollten berechnete Werte enthalten. Einige Berechnungen sind kompliziert und beinhalten viele Felder aus der Tabelle. Ich schreibe die Berechnung als VBA-Funktion. Ich könnte so etwas als "Kontrollquelle" eingeben:
%Vor%Aber ich möchte nicht Dutzende von Feldern im Funktionsaufruf auflisten. Stattdessen möchte ich das gesamte Formular (oder den aktuellen Datensatz) als Parameter senden und die Funktion auf die benötigten Felder verweisen lassen. Ich kann es so machen:
%Vor%Aber ich mag es nicht, das Formular im Anruf zu nennen. Gibt es keine Möglichkeit, die "aktuelle Form" als Funktionsargument zu senden? In VBA verwenden Sie einfach das Schlüsselwort "Ich", zum Beispiel "Ich! [Feld1]". Aber es scheint, als wäre "Ich" in einem Ausdruck nicht akzeptiert.
Gibt es eine andere Möglichkeit, die aktuelle Form in einem Ausdruck zu referenzieren?
(Es ist eine kosmetische Frage, ich weiß. Aber es ist keine gute Programmierung, "[Form]! [MyForm]" zu verwenden. Später kopieren Sie die Steuerelemente in ein anderes Formular und vergessen, den Namen im Ausdruck zu ändern ... )
Dank für Ihre Hilfe! : -)
/ Anders
'me' kann nur innerhalb des entsprechenden Formularobjekts (dh in den Prozeduren, Funktionen und Ereignissen des Objekts) aufgerufen werden.
Meine bevorzugte Art, auf das aktuelle Formular zu verweisen, ist das screen.activeForm-Objekt ...
aufzurufen %Vor%Natürlich können Sie das Formularobjekt an eine benutzerdefinierte Funktion
senden %Vor%Oder Sie könnten ein benutzerdefiniertes Objekt erstellen. Die benötigten Felder könnten dann als interne Eigenschaften betrachtet werden, die in dem Unterabschnitt Class_Initialize des entsprechenden Objekts festgelegt sind.
Wenn Sie Code im Formular verwenden, verweist "ich" auf das aktuelle Formular. Also
%Vor%"Ich" kann jedoch nicht im Zusammenhang mit einem Ausdruck verwendet werden, der an ein Textfeld gebunden ist.
In diesem Fall können Sie entweder den aktuellen Bildschirm in der Routine mit screen.activeform wie vorgeschlagen übernehmen.
Ich gehe oft:
%Vor% Ich verwende das, wenn ich das aktuelle Unterformular (oder Formular, wenn nicht gerade in einem Unterformular) haben möchte, weil Screen.ActiveForm
nicht das aktuelle Unterformular bereitstellt, sondern nur das Formular, das dieses Unterformular enthält. Seien Sie sich Ihres Kontexts bewusst, wenn das Steuerelement in einem Tab-Steuerelement ist, dann ist das übergeordnete Element dieses Tab-Steuerelement und nicht das Formular.
In ACC2013 konnte ich fionnuala keine Antwort geben. Also wechselte ich zu:
Ereignishandler im Property-Fenster:
%Vor%Mein Code wäre:
%Vor%