Hallo Peter,
das Programm habe ich zu Übungszwecken an der VHS verwendet und es hat
definitiv funktioniert unter 95, 97 und 2000. Aber lies die Hilfe von ACCESS
dazu:
Alle anzeigen
Informationen zum Verweisen auf ein Objekt oder dessen Eigenschaften in
Ausdrücken
Verwenden Sie einen Bezeichner in einem Ausdruck, um auf ein Objekt oder
dessen Eigenschaften zu verweisen. Sie können z. B. auf ein geöffnetes
Formular, einen geöffneten Bericht, ein Steuerelement in einem geöffneten
Formular oder Bericht oder auf beliebige Eigenschaften des Formulars oder
Berichts verweisen.
Verweisen auf ein Objekt mithilfe eines vollständigen Bezeichners
Die folgende Kennung verweist auf die Sichtbar-Eigenschaft eines
Steuerelements:
Reportsl![Rechnung]![Empfänger].Sichtbar
Die vollständige Kennung eines Objekts oder einer Eigenschaft zeigt die
Beziehung zwischen Elementen in der Kennung an. In diesem Beispiel heißt das:
"Reports" verweist auf die Auflistung geöffneter Berichte in der Datenbank.
Microsoft Access erstellt automatisch Forms- und Reports-Auflistungen für
jede Datenbank. Die Forms-Auflistung enthält alle geöffneten Formulare, die
Reports-Auflistung alle geöffneten Berichte.
[Rechnung] verweist auf den Bericht Rechnung in der Reports-Auflistung.
[Empfänger] verweist auf das Steuerelement Empfänger im Bericht Rechnung.
"Sichtbar" verweist auf die Sichtbar-Eigenschaft des Steuerelements
Empfänger.
Es ist sinnvoll, unter Verwendung eines vollständigen Bezeichners auf ein
Objekt oder eine Eigenschaft zu verweisen. Sie müssen z. B. den vollständigen
Bezeichner eingeben, wenn Sie auf ein Steuerelement in einem Formular oder
Bericht verweisen, das/der gerade nicht den Fokus hat. Der nachstehende
Ausdruck zeigt die Summe der Werte in den Steuerelementen Gesamtpreis und
Frachtkosten des Formulars Bestellung in einem Steuerelement in einem anderen
Formular an:
= Formulare![Bestellungen]![Gesamtpreis] +
Formulare![Bestellungen]![Frachtkosten]
Verweisen auf ein Objekt ohne einen vollständigen Bezeichner
In bestimmten Fällen können Sie auch ohne Angabe des vollständigen
Bezeichners auf ein Steuerelement oder seine Eigenschaften verweisen:
Wenn Sie auf ein Steuerelement im aktuellen Formular oder Bericht verweisen,
müssen Sie die Formular- oder Berichtskennung nicht angeben. Sie können z. B.
die Steuerelementinhalt-Eigenschaft folgendermaßen einstellen, wenn Sie die
Summe der Werte aus den Steuerelementen Gesamtpreis und Frachtkosten in einem
anderen Steuerelement desselben Formulars anzeigen möchten:
= [Gesamtpreis] + [Frachtkosten]
Wenn Sie auf ein Steuerelement in einem Unterformular oder einem
Unterbericht verweisen, müssen Sie die vollständige Kennung für das Formular
oder den Bericht nicht angeben, wenn Sie die Formular-Eigenschaft oder die
Bericht-Eigenschaft verwenden. Sie können z. B. die folgende Kennung
verwenden, um auf das Steuerelement Menge im Unterformular Bestellungen zu
verweisen:
Formulare![Bestellungen]![Unterformular Bestellungen]![Menge]
Die vollständige Kennung für das Steuerelement würde folgendermaßen lauten:
Formulare![Bestellungen]![Unterformular Bestellungen].Form![Menge]
In einem Makro oder einem Aktionsargument müssen Sie den Bezeichner für das
Formular oder den Bericht, in dem das Makro ausgeführt wird, nicht angeben.
Wenn Sie z. B. für eine Ereigniseigenschaft in einem Formular den Namen eines
Makros angeben, können Sie auf die Steuerelemente des Formulars in der Spalte
Bedingung des Makros oder in Aktionsargumenten ohne Angabe des Bezeichners
des Formulars verweisen.
In einer Visual Basic für Applikationen-Prozedur können Sie an Stelle des
vollständigen Bezeichners das Schlüsselwort Me verwenden, um auf ein
Steuerelement im aktuellen Formular oder Bericht zu verweisen. Fügen Sie z.
B. die nachstehende Anweisung zur Ereignisprozedur hinzu, wenn Sie die Summe
der Werte in den Steuerelementen Gesamtpreis und Frachtkosten eines Formulars
der Variablen Bestellsumme in einer der Ereignisprozeduren des Formulars
zuweisen möchten:
OrderTotal = Me![Subtotal] + Me![Freight]
gesucht nach: bezeichner von Unterformularen
Anmerkungen
Wenn Sie ein Makro oder Microsoft Visual Basic für Applikationen-Code
ausführen, in dem ein enthaltener Ausdruck auf ein Formular oder einen
Bericht verweist, muss das Formular bzw. der Bericht geöffnet sein.
In einer Microsoft Visual Basic-Prozedur können Sie durch Angeben des Namens
eines Objekts in Klammern und unter Verwendung von Anführungszeichen (")
anstatt des !-Operators auf ein Objekt verweisen. Die Klammernsyntax ist
erforderlich, wenn Sie in einem Bezeichner eine Variable verwenden möchten.
Die nachstehenden Bezeichner sind z. B. gleichbedeutend:
Forms![Orders]![OrderDate]
Forms("Orders")("OrderDate")
Mit freundlichen Grüßen
Michael
Post by mlootzHallo,
Post by mlootzPost by Peter DoeringPost by mlootzich habe folgenden Fehler festgestellt: In ACCESS 2003 mit SP2 unter XP mit
SP2 funktionieren keine Aktionen wie "Beim Hingehen" wenn der Ausdruck über
den Ausdrucks-Generator erzeugt wird. Das ganze habe ich auf mehreren
PC/Laptops getestet und wurde auch von anderen bestätigt. Unter den früheren
Versionen hat das funktioniert.
Beispiel: Auf eienm Formular mit 3 Feldern
dat1 als Datum
dat2 als Datum
erg als Zahl
basierend auf gleichnamiger Tabelle.
Wenn ich auf das Ereignis "Beim Hingehen" von erg den Ausdrucks-Generator
aufrufen und dort
=[dat2]-[dat1]
hineinschreibe, dann bleibt die Berechnung beim hingehen aus. Dito für alle
anderen Aktionen.
Entweder du hast hier einen Denkfehler ... oder ich hab dich falsch
verstanden. ;-)
Die Berechnung als Ausdruck im Ereignis ist fuer die Katz. Wenn du keinem
Feld mitteilst, dass es das Ergebnis darstellen soll, wird nichts
passieren.
Verwende stattdessen den Ausdruck als Steuerelementinhalt. Falls da schon
was steht, weil es ein gebundenes Feld ist, musst du die Berechnung am
Private Sub erg_Enter()
Me!erg.Value = Me!dat2 - Me!dat1
End Sub
[...]
=[dat1]+[dat2]
Wenn Du dann wieder in die Formularansicht wechselst und Werte in da1 und
dat2 einträgst so sollte beim hingehen (Maus oder Tab) in erg das ergebnis
von dat1 und dat2 stehen.
Also, dass man in der *Ereignis*-Zeile Berechnungen durchfuehren koennte,
waere mir neu. Ich hab vorsichtshalber neben A03 auch mal auf A97 getestet,
neben deiner auch ziemlich viele andere Varianten, mit und ohne Eval, aber
ins Feld [erg] von da aus nichts reingekriegt.
Deshalb bleibe ich dabei: In einem *Ereignis*, anders als in der
Steuerelementherkunft, kann man einem Feld keine Werte zuweisen und konnte
man auch nie. Da hat MS bei der A03 nix vergessen. Der Umstand, dass es den
Expression Editor an der Stelle auch gibt, haengt damit zusammen, dass es
durchaus unterschiedliche, von Ausdruecken abhaengige Aufrufe von Makros
oder Prozeduren geben kann.
Gruss - Peter