Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wieso Me!Text statt Me.Text?

250 views
Skip to first unread message

Mark Doerbandt

unread,
Dec 1, 2001, 8:42:00 AM12/1/01
to
Hallo, Joe,

* Joe Saccone (Sa, 01 Dez 2001 12:42:54 GMT):

> was fuer triefende Gruende koennte es geben, statt dem Punkt ein
> Ausrufezeichen als Operator zu nehmen, z.B. Me!Text statt Me.Text?

Lies dazu mal FAQ 6.3 (http://www.donkarl.com).

> Der Vorteil des Punktes ist doch, dass dadurch automatisch eine
> Auswahliste angezeigt wird. Ist doch praktisch?

Ja, und wie Uwe uns verraten hat bekommst Du die auch nach dem !
durch Ctrl-Blank.

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Rudi Tüscher

unread,
Dec 1, 2001, 9:15:42 AM12/1/01
to
hallo Joe
Du stellt die richtige Frage! Die Ausrufezeichen/Punkt-Syntax ist effektiv
ein Erbe aus Uralt-Access-Zeiten und kann heute durch die VBA-Konventionen
ersetzt werden.
Also:
statt Forms![Wurstbrote ausgeben].idWurstbrot
besser Forms("Wurstbrote ausgeben").idWurstbrot
Gründe gibt es einige, dies vorzuziehen.
Erstens ist es wenig produktiv, Konventionen zu mischen, und in Office wird
nun mal VBA verwendet.
Zweitens soll Access scheinbar im Hintergrund die
Ausrufezeichen/Punkt-Syntax in die VBA-Syntax umwandeln, was einen
Performanceverlust mit sich bringen kann.
Und drittens enthält die "alte" Access-Syntax eine Fehlerquelle, indem Namen
mit Leerzeichen dazwischen in eckige Klammern eingeschlossen werden müssen.

Fazit: einmal lernen (VBA), oftmals brauchen statt ein Kauderwelsch zu
benutzen.
Anmerkungen: Es gibt Fälle, wo man um die "!/."-Syntax nicht herumkommt
(Abfragen mit Formularfeldern in der Kriterienzeile).

--
Rudi Tüscher
Mausklick Computerkurse
CH-2500 Biel
rudi.t...@mausklick.ch
"Joe Saccone" <no_e...@gmx.net> schrieb im Newsbeitrag
news:3c08cfa0...@news.23annuitcoeptis5.org...
> Hallo Accessler,
>
> was für triefende Gründe könnte es geben, statt dem Punkt ein


> Ausrufezeichen als Operator zu nehmen, z.B. Me!Text statt Me.Text?

> Der Vorteil des Punktes ist doch, dass dadurch automatisch eine
> Auswahliste angezeigt wird. Ist doch praktisch?
>

> Grüße
> Joe


Harald Langer

unread,
Dec 1, 2001, 6:48:36 PM12/1/01
to
"Rudi Tüscher" schrieb:

>Du stellt die richtige Frage! Die Ausrufezeichen/Punkt-Syntax ist effektiv
>ein Erbe aus Uralt-Access-Zeiten und kann heute durch die VBA-Konventionen
>ersetzt werden.
>Also:
>statt Forms![Wurstbrote ausgeben].idWurstbrot
>besser Forms("Wurstbrote ausgeben").idWurstbrot

Jein.
Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
Forms("Wurstbrote ausgeben")!idWurstbrot

>Gründe gibt es einige, dies vorzuziehen.
>Erstens ist es wenig produktiv, Konventionen zu mischen, und in Office wird
>nun mal VBA verwendet.

Kann es sein, daß Du da irgendetwas verwexelst?
Die Punkt-Notation verweist auf Eigenschaften/Methoden, während das
Ausrufezeichen als Objekttrenner fungiert.

>Und drittens enthält die "alte" Access-Syntax eine Fehlerquelle, indem Namen
>mit Leerzeichen dazwischen in eckige Klammern eingeschlossen werden müssen.

Was meinst Du mit "alter" Access-Syntax? Die Möglichkeit Objektnamen
in runde Klammern zu setzen, gab es schon früher (ist übrigens die
einzige Möglichkeit, um Variablen als Objektnamen anzuwenden).
In der XP-Hilfe steht das zwar nicht mehr drin, aber bei früheren
Versionen nachlesbar:
1.) Forms!DeinForm!DeinFeld = die schnellste Variante
2.) Forms![Dein Form]![Dein Feld] = entspricht 1, wird aber nur bei
Leerzeichen im Objektnamen benötigt und
3.) Forms("DeinForm")("DeinFeld") = die langsamste Variante.

IMHO ist das Verwenden von Leerzeichen bei Objektnamen eh ein
Designfehler.

Gruß
Harald
--
www.access-guru.de

Henry Habermacher [MVP Access]

unread,
Dec 1, 2001, 10:37:42 PM12/1/01
to
Hallo Joe

"Joe Saccone" <no_e...@gmx.net> wrote in message


news:3c08cfa0...@news.23annuitcoeptis5.org...
> Hallo Accessler,
>
> was für triefende Gründe könnte es geben, statt dem Punkt ein
> Ausrufezeichen als Operator zu nehmen, z.B. Me!Text statt Me.Text?
> Der Vorteil des Punktes ist doch, dass dadurch automatisch eine
> Auswahliste angezeigt wird. Ist doch praktisch?

Infos zum Thema . und ! findest Du in der FAQ
Zudem solltest Du Deine Felder nicht so benennen, dass diese gleich wie
reservierte Begriffe heissen. Text meint in Access das Text Property
eines Textfeldes. Daher wäre es besser, dieses Feld zB. txtText oder
TextFeld zu benennen.

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
MVP: http://support.microsoft.com/support/mvp


Henry Habermacher [MVP Access]

unread,
Dec 1, 2001, 10:42:52 PM12/1/01
to
Hallo Harald

"Harald Langer" <in...@haraldlanger.de> wrote in message
news:u3qi0uoi7cadacovk...@4ax.com...

> Jein.
> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
> Forms("Wurstbrote ausgeben")!idWurstbrot

Bist Du da ganz sicher? Ich kann mich wate erinnern, vor einigen Jahren
(vermutlich noch zu Beginn der A97 Area) einen KB Artikel gelesen zu
haben, der sagt, man solle die zweite Notation vorziehen, da diese
performanter sei. Ich war damals auch überrascht, aber scheinbar geht
die erste Notation dann über zusätzlichen Code, wobei die zweite
Notation direkt auf die Forms Collection zugreifen kann. Das gleiche
auch bei Feldern einer Tabelle (ich glaube darauf bezog sich der KB
Artikel hauptsächlich). Damals habe ich mich überzeugen lassen, meinen
Code teilweise auf die empfohlene Art zu schreiben und als Überbleibsel
ist noch die Forms("..") Notation geblieben.

Harald Langer

unread,
Dec 2, 2001, 5:35:37 AM12/2/01
to
Hallo Henry,

"Henry Habermacher" schrieb:
>"Harald Langer" wrote


>
>> Jein.
>> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
>> Forms("Wurstbrote ausgeben")!idWurstbrot
>
>Bist Du da ganz sicher?

nöö, aber wenn mir die OH das seit Jahren so sagt und auch in der KB
(Q133228) die Notation in eckigen Klammern bevorzugt wird, dann glaub'
ich das einfach.

>Ich kann mich wate erinnern, vor einigen Jahren
>(vermutlich noch zu Beginn der A97 Area) einen KB Artikel gelesen zu
>haben, der sagt, man solle die zweite Notation vorziehen, da diese
>performanter sei.

Wäre schön, wenn Du den Artikel noch findest. Ich war bei meiner Suche
danach leider erfolglos, laß mich aber gerne eines besseren belehren.


Ich war damals auch überrascht, aber scheinbar geht

Viele Grüße
Harald
--
www.access-guru.de

Mark Doerbandt

unread,
Dec 2, 2001, 7:36:53 AM12/2/01
to
Hallo, Joe,

* Joe Saccone (So, 02 Dez 2001 10:34:36 GMT):

> Die hier gepostet wird, oder die donkarl?

Karl postet die FAQ hier nicht mehr. Was regelmaessig von Stefan
gepostet wird, ist eine Info fuer Neulinge in der Newsgroup.

Mark Doerbandt

unread,
Dec 2, 2001, 7:37:48 AM12/2/01
to
Hallo, Joe,

* Joe Saccone (Sa, 01 Dez 2001 22:55:25 GMT):

> Ich kann es hier nicht ausprobieren. Du - bzw. Uwe - meinst also
> nach dem ! die Kombination CTRL+SPACE zu benutzen? Muss man das
> dann jedesmal machen, oder gilt das dann wenigstens fuer die ganze
> aktuelle Prozedur?

Ja und jedesmal, wenn Du die dropdown-Liste sehen willst.

Philipp Stiefel

unread,
Dec 2, 2001, 9:22:40 AM12/2/01
to
Harald Langer <in...@haraldlanger.de> schrieb:

> "Henry Habermacher" schrieb:
>>"Harald Langer" wrote
>>
>>> Jein.
>>> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
>>> Forms("Wurstbrote ausgeben")!idWurstbrot
>>
>>Bist Du da ganz sicher?
>
> nöö, aber wenn mir die OH das seit Jahren so sagt und auch in der KB
> (Q133228) die Notation in eckigen Klammern bevorzugt wird, dann glaub'
> ich das einfach.

Dann werde ich mal den "wahren Glauben" verbreiten. ;-)

Mir persönlich ist es relativ egal was schneller ist, weil ich die
Forms("")-Syntax wesentlich sauberer finde und ich sie schon deshalb
vorziehe. Außerdem möchte ich mich mental auf .NET vorbereiten. Dort
gibt es keine Standard-Eigenschaften mehr, d.h. man muss sich
sowieso auf Controls(""), Fields("") usw. umstellen.

Nun aber zu den hard facts:

Folgender Versuchaufbau:

Rechner: PII 233, 256MB RAM
Software: WinNT 4.0 SP5, Acc 2000 SR1

Ein Formular (frmManyCtls) mit 160 Controls (Labels und Textboxen zu
gleichen Teilen).

In einem Modul befindet sich folgende Sub:

' **********************************************************
Public Sub OpenFormManyTimes()

Dim i As Long
Dim j As Long
Dim startTime As Date
Dim endTime As Date

Const strFORM_NAME As String = "frmManyCtls"

startTime = Now

DoCmd.OpenForm strFORM_NAME, acNormal
For i = 0 To 1000
For j = 0 To Forms(strFORM_NAME).Controls.Count - 1
' Alternativ:
' For j = 0 To Forms![frmManyCtls].Controls.Count - 1
' Alternativ 2:
' For j = 0 To Forms!frmManyCtls.Controls.Count - 1

Forms(strFORM_NAME).Controls(j).BackColor = 0 + j
' Alternativ:
' Forms![frmManyCtls].Controls(j).BackColor = 0 + j
' Alternativ 2:
' Forms!frmManyCtls.Controls(j).BackColor = 0 + j
Next
Next
DoCmd.Close acForm, strFORM_NAME

endTime = Now
Debug.Print "Elapsed: "; Format(CDate(endTime - startTime), "hh:nn:ss")
End Sub
' **********************************************************

Für jede Alternative wurde die Sub je 6 mal aufgerufen. Die
Duchschnittsergebnisse für einen Durchlauf der Sub sind:

Forms("FormName")-Syntax:
Elapsed: 00:02:17

Forms![FormName]-Syntax:
Elapsed: 00:03:39

Forms!FormName-Syntax:
Elapsed: 00:03:29


Schön. :-)

Um das Ergebnis etwas zu relativieren: Wäre es zuungunsten der
Forms("")-Syntax ausgefallen, hätte die Differenz mindestens um den
Faktor 20 größer sein müssen, um mich ernsthaft zu beeindrucken.

Viele Grüße
Phil

--
Im Zweifelsfall beziehen sich die Informationen in
diesem Artikel auf Access 2K SR1 auf WinNT4 SP5
--------------------------------------------------------------------------------
Für Neulinge i.d. Access-Newsgroups: http://www.doerbandt.de/access/Newbie.htm

Henry Habermacher [MVP Access]

unread,
Dec 2, 2001, 10:30:24 AM12/2/01
to
Hallo Phil

"Philipp Stiefel" <ph...@codekabinett.de> wrote in message
news:9udgi...@knight.pstiefel.de...

> Für jede Alternative wurde die Sub je 6 mal aufgerufen. Die
> Duchschnittsergebnisse für einen Durchlauf der Sub sind:
>
> Forms("FormName")-Syntax:
> Elapsed: 00:02:17
>
> Forms![FormName]-Syntax:
> Elapsed: 00:03:39
>
> Forms!FormName-Syntax:
> Elapsed: 00:03:29
>

Da hast Du mir eine Menge Arbeit erspart, wollte das nämlich morgen auch
gleich austesten. Scheinbar trügt mich meine Erinnerung also doch nicht,
auch wenn ich den KB Artikel nicht mehr finde. Vielleicht werde ich mal
in ein paar freien Stunden das Dingens suchen. Könnte aber auch in einem
der Whitepapers oder einer Hilfedatei gestanden haben. Ist sicher schon
3-4 Jahre her, wo ich das gelesen habe.

Gruss und Danke

Harald Langer

unread,
Dec 2, 2001, 2:15:14 PM12/2/01
to
Hallo Phil,
Hallo Phil,

Philipp Stiefel schrieb:
>Harald Langer schrieb:


>> "Henry Habermacher" schrieb:
>>>"Harald Langer" wrote
>>>
>>>> Jein.
>>>> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
>>>> Forms("Wurstbrote ausgeben")!idWurstbrot
>>>
>>>Bist Du da ganz sicher?
>>
>> nöö, aber wenn mir die OH das seit Jahren so sagt und auch in der KB
>> (Q133228) die Notation in eckigen Klammern bevorzugt wird, dann glaub'
>> ich das einfach.
>
>Dann werde ich mal den "wahren Glauben" verbreiten. ;-)

oh, oh...
Mit dem wahren Glauben ist das so, wie mit der absoluten Wahrheit,
gelle? ;-)

>Nun aber zu den hard facts:

Ok, Herausforderung angenommen. ;-)

>Ein Formular (frmManyCtls) mit 160 Controls (Labels und Textboxen zu
>gleichen Teilen).
>
>In einem Modul befindet sich folgende Sub:
>
>' **********************************************************
>Public Sub OpenFormManyTimes()

>[..]


>
>Für jede Alternative wurde die Sub je 6 mal aufgerufen. Die
>Duchschnittsergebnisse für einen Durchlauf der Sub sind:
>
>Forms("FormName")-Syntax:
>Elapsed: 00:02:17
>
>Forms![FormName]-Syntax:
>Elapsed: 00:03:39
>
>Forms!FormName-Syntax:
>Elapsed: 00:03:29

Auf einem PIII 1000 mit 256 MB RAM, W2k SP2 und AXP/A97 SR1 mit einem
vergleichbaren Formular gegengetestet:
XP = 14 Sekunden (bei allen drei Varianten)
97 = 7 Sekunden (ebenfalls bei allen drei Varianten)

Mist! :-(

>Schön. :-)

Mit dem wahren Glauben ist das... ach, ich wiederhole mich. ;-)
Aber Dein Beispiel hinkt ein bißchen, weil Du ja über den Index der
Controls gehst.
Also ein wenig verändert:
Formular mit 96 Textfeldern (zu mehr hat mir die Lust gefehlt).
Text1, Text2, Text3 etc.
5000 x das Wort "test" in alle Textfelder schreiben und 5 mal die 3
Notationsvarianten durchlaufen, also
1.) Forms!Formular1!Text1
2.) Forms("Formular1")("Text" & x)
3.) Forms("Formular1")("Text1")
etc.
Gesamt-Ergebnisse:
Access 97
1: 110 Sekunden
2: 117 Sekunden (das hätt' ich nicht geglaubt)
3: 110 Sekunden (Dreck! ;-)

Access XP
1: 164 Sekunden (Jubel! ;-)
2: 168 Sekunden
3: 165 Sekunden (Hähä!)

Ergo: Ich revidiere meine Meinung, daß die Ausrufezeichen-Notation auf
jeden Fall die schnellere ist (auch wenn sie's ist. ;-).

Ach ja - und mit den Tests ist das auch immer so eine Sache...

Philipp Stiefel

unread,
Dec 2, 2001, 5:17:12 PM12/2/01
to

Harald Langer <in...@access-guru.de> writes:
> Philipp Stiefel schrieb:
>> Harald Langer schrieb:
>>> "Henry Habermacher" schrieb:
>>>> "Harald Langer" wrote

>>>>> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als


>>>>> Forms("Wurstbrote ausgeben")!idWurstbrot
>>>>
>>>> Bist Du da ganz sicher?
>>>
>>> nöö, aber wenn mir die OH das seit Jahren so sagt und auch in der KB
>>> (Q133228) die Notation in eckigen Klammern bevorzugt wird, dann glaub'
>>> ich das einfach.
>>
>> Dann werde ich mal den "wahren Glauben" verbreiten. ;-)
>
> oh, oh...
> Mit dem wahren Glauben ist das so, wie mit der absoluten Wahrheit,
> gelle? ;-)

Ja, beinahe. Für den wahren Glauben kann man immer noch...
...nein, ich möchte hier jetzt keine organisierten Religionen diffamieren.

[...]

> Aber Dein Beispiel hinkt ein bißchen, weil Du ja über den Index der
> Controls gehst.

Nein, IMO nicht. Ich gehe ja bei allen Varianten über den Index der
Controls-Collection, daher kann dadurch eigentlich keine Verfälschung
des Ergebnisses eintreten. Aber es ist klar, dass in meinen Beispiel nur
die verschiedenen Möglichkeiten, ein Formular anzusprechen, verglichen
werden.

> Also ein wenig verändert:
> Formular mit 96 Textfeldern (zu mehr hat mir die Lust gefehlt).
> Text1, Text2, Text3 etc.
> 5000 x das Wort "test" in alle Textfelder schreiben und 5 mal die 3
> Notationsvarianten durchlaufen, also
> 1.) Forms!Formular1!Text1
> 2.) Forms("Formular1")("Text" & x)
> 3.) Forms("Formular1")("Text1")

Hier bringst du eine zusätzliche Komponente in's Spiel, die vorher
nicht zur Diskussion stand. Dadurch, dass du nicht mehr explizit die
Controls-Collection ansprichst, ist eine zusätzliche Auflösung der
Standardeigenschaft erforderlich. Ich hab vorhin auch nicht dran
gedacht, diese bis in's Letzte aufzulösen.

Ein kurzer Test mit
Forms.Items("FormName").Controls.Items("ControlsName").Eigenschaft
liefert jetzt nicht signifikant andere Ergebnisse als das gepostete
Beispiel von Vorhin. - Allerdings laufen jetzt auch ca. 25 Prozesse
mehr auf der Testmaschine.

> Gesamt-Ergebnisse:
> Access 97
> 1: 110 Sekunden
> 2: 117 Sekunden (das hätt' ich nicht geglaubt)

Das war abzusehen. Die Variante erfordert wegen der Stringverkettung im
Gegensatz zu den beiden anderen definitiv mehr Rechenleistung. Ich hätte
eher einen noch größeren Unterschied erwartet.

> 3: 110 Sekunden (Dreck! ;-)

:-)

> Access XP
> 1: 164 Sekunden (Jubel! ;-)
> 2: 168 Sekunden
> 3: 165 Sekunden (Hähä!)

Da hast du bestimmt den Rechner mental gebremst. ;-)

> Ergo: Ich revidiere meine Meinung, daß die Ausrufezeichen-Notation auf
> jeden Fall die schnellere ist (auch wenn sie's ist. ;-).

ROFL!

> Ach ja - und mit den Tests ist das auch immer so eine Sache...

Nicht, wenn ich sie gefä^Wdurchgeführt habe! ;-)

Viele Grüße
Phil

--
Im Zweifelsfall beziehen sich die Informationen in
diesem Artikel auf Access 2K SR1 auf WinNT4 SP5
------------------------------------------------------------------------------

Frank Hammerschmidt

unread,
Dec 2, 2001, 7:34:30 PM12/2/01
to
Hi Phil,

Philipp Stiefel schrieb

> Mir persönlich ist es relativ egal was schneller ist, weil ich die
> Forms("")-Syntax wesentlich sauberer finde und ich sie schon deshalb
> vorziehe. Außerdem möchte ich mich mental auf .NET vorbereiten. Dort
> gibt es keine Standard-Eigenschaften mehr, d.h. man muss sich
> sowieso auf Controls(""), Fields("") usw. umstellen.

Nix da, es wird ein integer erwartet:

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

Dim c As Windows.Forms.Control
Dim i As System.Int32

For i = 0 To Me.Controls.Count - 1
c = Controls(i)

' If c.GetType = System.Windows.Forms.TextBox() Then
' funktioniert nicht, Beta2???

' If c.GetType.ToString = "System.Windows.Forms.TextBox" Then
' das funktioniert, ist vielleicht nicht ganz praktisch

' If Mid(c.Name, 1, 7) = "Textbox" Then
' Funktioniert nicht, die Dinger haben den Namen "TextBox.."

If Mid(c.Name, 1, 7) = "TextBox" Then
c.Text = i.ToString
End If
Next

' c = Me.Controls("TextBox1")
' Das knallt, integer erwartet!
c = Me.Controls(4)
c.Text = "Ich freu' mich auf .NET ;-)"

End Sub

Schönen Gruß
Frank

Rudi Tüscher

unread,
Dec 3, 2001, 3:28:27 AM12/3/01
to

"Harald Langer" <in...@haraldlanger.de> schrieb im Newsbeitrag
news:u3qi0uoi7cadacovk...@4ax.com...

> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
> Forms("Wurstbrote ausgeben")!idWurstbrot

vor dem Besserwissen besser lesen :-) du zitierst mich falsch.....

> 1.) Forms!DeinForm!DeinFeld = die schnellste Variante
> 2.) Forms![Dein Form]![Dein Feld] = entspricht 1, wird aber nur bei
> Leerzeichen im Objektnamen benötigt und
> 3.) Forms("DeinForm")("DeinFeld") = die langsamste Variante.

es geht ja nicht um die Geschwindigkeit, weil sicher vernachlässigbar, aber
du findest in Getz,Litwin,Gilbert, Access 2000 Developer's Handbook Vol. 1
einen Kasten "Dot versus Bang" - die sind jedenfalls nicht deiner Meinung
:-)

Wahrscheinlich müsst Ihr Gurus das mal ausklamüsern untereinander.

Meine Grundhaltung ist halt immer noch, die Leute sollten möglichst wenig
und möglichst nachhaltig lernen müssen, und das ist bei der Verwendung der
VBA-Syntax = Collection(Item).MethodeOderEigenschaft gegeben, da durchgängig
in allen Office-Applikationen das so gemacht wird. Mit "alt" meinte ich auch
die Zeit vor VBAÜberall, also: Word-Basic, Access-Baisc, Excel MakroSprache
(Schauder.....)
Schönen Tag

Harald Langer

unread,
Dec 3, 2001, 4:15:52 AM12/3/01
to
"Rudi Tüscher" schrieb:
>"Harald Langer" schrieb

>> Forms![Wurstbrote ausgeben]!idWurstbrot ist besser als
>> Forms("Wurstbrote ausgeben")!idWurstbrot
>
>vor dem Besserwissen besser lesen :-) du zitierst mich falsch.....

Richtig falsch zitieren ist halt genauso eine Kunst, wie das besser
Besserwissen. ;-)

>> 1.) Forms!DeinForm!DeinFeld = die schnellste Variante
>> 2.) Forms![Dein Form]![Dein Feld] = entspricht 1, wird aber nur bei
>> Leerzeichen im Objektnamen benötigt und
>> 3.) Forms("DeinForm")("DeinFeld") = die langsamste Variante.
>
>es geht ja nicht um die Geschwindigkeit, weil sicher vernachlässigbar, aber
>du findest in Getz,Litwin,Gilbert, Access 2000 Developer's Handbook Vol. 1
>einen Kasten "Dot versus Bang" - die sind jedenfalls nicht deiner Meinung
>:-)

Würde mich interessieren, was da im 2000er-ADH steht.

Ich zitiere aus dem 97er-ADH:
Bang(!) versus Dot (.)
The bang (!) and sot (.) identifier operators help describe the
relationships among collections, objects, and properties in an
expression. They indicate that one part of an expression belongs to
another.
In general, you follow the bang with the name of something you
created: a form, report, or control. The bang also indicates that the
item to follow is an element of a collection. You'll usually follow
the dot with a property, collection or method name.
You can also think of the uses of these operators this way: a bang
separates an object from the collection it's in (a field in a table, a
form in the Forms collection, a control on a form), while a dot
separates an object from a property, method, or collection of that
object.

Ähmm... ja... bestätigt eigentlich meine Haltung.

>Mit "alt" meinte ich auch
>die Zeit vor VBAÜberall, also: Word-Basic, Access-Baisc, Excel MakroSprache
>(Schauder.....)

Ach, die jungen Hupfer... ;-)

Gruß
Harald
--
www.access-guru.de

Uwe Ricken

unread,
Dec 3, 2001, 6:14:36 AM12/3/01
to
Hallo Joe,

zu guter letzt (alle Diskussionen wurden bereits geführt:-) )
möchte ich auch noch meinen "leidvollen" Beitrag dazu steuern.

- ! trennt Objekte voneinander
- . trent Objekte von Eigenschaften/Methoden

Die obige Syntax gab es schon bei Access 2.0 und es wurde im Rahmen
der Umstellung auf Access 95/97 darauf hingewiesen, dass Code, der
nicht dieser Syntax entspricht, u. U. nicht korrekt kompiliert werden
kann.

Genau so war es dann auch, als ich meine Access 2.0-Projekte in
Access 97 konvertieren wollte. Mir sind meine Applikationen teil-
weise um die Ohren gehauen worden :-)

Ich kann Dir nur empfehlen (entegegen allen anderen Meinungen),
diese Syntax zu verwenden. Damit ersparst Du dir eine Menge
Ärger bei Access-Abstürzen (>= A2K)
Wir haben ein mehrjähriges Projekt durchforstet und haben dabei
festgestellt, dass bei korrekter Anwendung der Syntax die
Absturzhäufigkeit gegen NULL gegangen ist.


--
Gruß, Uwe Ricken
MCP FOR MS ACCESS DEVELOPMENT
GNS GmbH, Frankfurt am Main
http://www.gns-online.de
____________________________________________________
APP: http://www.AccessProfiPool.com
FAQ: http://www.donkarl.com/AccessFAQ.htm


"Joe Saccone" <no_e...@gmx.net> schrieb im Newsbeitrag

news:3c08cfa0...@news.23annuitcoeptis5.org...
> Hallo Accessler,
>
> was für triefende Gründe könnte es geben, statt dem Punkt ein
> Ausrufezeichen als Operator zu nehmen, z.B. Me!Text statt Me.Text?
> Der Vorteil des Punktes ist doch, dass dadurch automatisch eine
> Auswahliste angezeigt wird. Ist doch praktisch?
>

> Grüße
> Joe

Hubert Benden

unread,
Dec 3, 2001, 10:14:01 AM12/3/01
to
Hallo Harald und die anderen,

kann es sein, dass meiner unmassgeblichen Meinung nach
der wichtigste Unterschied zwischen . und ! zu kurz gekommen,
bezw. noch nicht zur Sprache gekommen ist?

Meines Wissens nach wird me.text beim Kompilieren rerferenziert
(ist also wesentlich schneller), me!text und die anderen Varianten
wie me("text") usw. werden zur Laufzeit referenziert (sind also
langsamer). ein nicht uninterssanter Nebeneffekt: me.txt muss
beim Kompilieren vorhanden sein, sonst gibt es eine Fehlermeldung.
Me!txt muss beim kompilieren nicht vohanden sein, bringt aber
wenn nicht vorhanden einen Laufzeitfehler.

MfG
Hubert Benden

"Harald Langer" <in...@access-guru.de> schrieb im Newsbeitrag
news:elem0uguhuhhg8etq...@4ax.com...

Raymond Geering

unread,
Dec 3, 2001, 10:28:50 AM12/3/01
to

"Mark Doerbandt" <spamre...@doerbandt.de> schrieb :

> Ja und jedesmal, wenn Du die dropdown-Liste sehen willst.

...und da Programmierer von Natur aus eher faul sind, würde
dies doch für den Punkt sprechen ;) Na ja, ich habe mir jetzt
trotzdem das Ausrufezeichen angewöhnt um es richtig
zu machen.

/Ray


Raymond Geering

unread,
Dec 3, 2001, 10:42:41 AM12/3/01
to

"Joe Saccone" <no_e...@gmx.net> schrieb :

> >- ! trennt Objekte voneinander
> >- . trent Objekte von Eigenschaften/Methoden

> Ich sehe auch schon meine Tätigkeit nächste Woche: Sicherungskopie
> erstellen, gesamten Code durchstöbern, eventuell Punkt durch
> Ausrufezeichen ersetzen. Ich weiss nicht wieviele LOC's das sind, aber
> es sind viele, sehr viele.... :(
> Naja, wat mut, dat mut!

LOL, also ich bin durch die vielen Threads nun total verunsichert.
Ich habe mir auch angewöhnt, bei den neuen Datenbanken
! vor Objekten und . vor Eigenschaften zu machen (aber bei den
alten korrigiere ich es nur sporadisch...die laufen auch noch
mit dem Punkt, wenn es sein muss).

Nicht so erfreut hat mich Zitat Philipp Stiefel: "Außerdem


möchte ich mich mental auf .NET vorbereiten. Dort gibt es
keine Standard-Eigenschaften mehr, d.h. man muss sich
sowieso auf Controls(""), Fields("") usw. umstellen."

Das würde dann bedeuten, dass man schon wieder alles
umstellen muss :(

Vorerst werde ich jedenfalls trotzdem mit ! vor Objekten
weitermachen....so ein bisschen Risiko muss sein ;)

Gruss
/Ray

Mark Doerbandt

unread,
Dec 3, 2001, 11:54:06 AM12/3/01
to
Hallo, Joe,

* Joe Saccone (Mo, 03 Dez 2001 16:41:13 GMT):

>> LOL, also ich bin durch die vielen Threads nun total
>> verunsichert.

> Naja, geht mir aehnlich...

Es ist doch nur einer, also lasst Euch mal nicht gleich verunsichern.

> Das wurde aber durch Frank Hammerschmidt's Posting wieder
> relativiert (es wird Integer erwartet, also statt zB
> Controls.("Textbox") eben Controls.(1)).

Das ist eine interessante Feststellung, aber ich zitiere mal die A97-
OH:

<Zitat OH>
In einer Visual Basic-Prozedur koennen Sie auf ein Objekt verweisen,
indem Sie dessen Namen in Klammern und Anfuehrungszeichen (" ")
setzen, statt den Operator ! zu verwenden. Die Klammern sind
erforderlich, wenn Sie eine Variable in einem Bezeichner verwenden
moechten. Die folgenden Bezeichner sind beispielsweise gleichwertig:

Forms![Bestellungen]![Bestelldatum]
Forms("Bestellungen")("Bestelldatum")
</Zitat OH>

Insbesondere moechte ich auf das Wort gleichwertig hinweisen (was
natuerlich /nicht/ in bezug auf irgendwelche gef^h^h^hdurchgefuehrten
Performancetests zu werten ist ;-). Natuerlich gibt es alternativ die
Moeglichkeit, einen Integer zu verwenden, um auf das n-te Element
einer Auflistung zu verweisen, aber eben nicht nur.

Mark Doerbandt

unread,
Dec 3, 2001, 12:48:30 PM12/3/01
to
Hallo, Joe,

* Joe Saccone (Mo, 03 Dez 2001 17:44:39 GMT):

> das Thema war nicht A97 sondern eher die .NET-Conventions.
Threadnochmalgelesenschwanzeinzieh...

Frank Hammerschmidt

unread,
Dec 3, 2001, 12:39:00 PM12/3/01
to
Hallo Mark,

Mark Doerbandt schrieb

> > Das wurde aber durch Frank Hammerschmidt's Posting wieder
> > relativiert (es wird Integer erwartet, also statt zB
> > Controls.("Textbox") eben Controls.(1)).

> Insbesondere moechte ich auf das Wort gleichwertig hinweisen (was


> natuerlich /nicht/ in bezug auf irgendwelche gef^h^h^hdurchgefuehrten
> Performancetests zu werten ist ;-). Natuerlich gibt es alternativ die
> Moeglichkeit, einen Integer zu verwenden, um auf das n-te Element
> einer Auflistung zu verweisen, aber eben nicht nur.

Du hast vielleicht übersehen, dass Phil uns auf den Off-Topic-Pfad
lockte. Wir waren inzwischen bei .NET; für A gilt latür, was Du aus
der OH zitiertest.

Schönen Gruß
Frank

Mark Doerbandt

unread,
Dec 3, 2001, 1:13:12 PM12/3/01
to
Hallo, Frank,

* Frank Hammerschmidt (Mo, 03 Dez 2001 17:39:00 GMT):

> Du hast vielleicht uebersehen, dass Phil uns auf den
> Off-Topic-Pfad lockte. Wir waren inzwischen bei .NET ...

Nicht nur vielleicht ...

schoenen Gruss zurueck - Mark

Philipp Stiefel

unread,
Dec 3, 2001, 2:44:16 PM12/3/01
to

"Uwe Ricken" <ric...@gns-online.de> writes:
>
> - ! trennt Objekte voneinander

Wäre es nicht korrekter zu sagen "!" ermöglicht den direkten Zugriff auf
Objekte aus einer Collection?

> - . trent Objekte von Eigenschaften/Methoden
>
> Die obige Syntax gab es schon bei Access 2.0 und es wurde im Rahmen
> der Umstellung auf Access 95/97 darauf hingewiesen, dass Code, der
> nicht dieser Syntax entspricht, u. U. nicht korrekt kompiliert werden
> kann.

Warum sollte auch falscher Code kompiliert werden? <eg>

Ich bin der Meinung, dass Access bzw. VBA da noch viel zu harmlos ist
und es mindestens einen Compiler-Switch a la "reject unclean code" geben
sollte, der solche unsauberen Sachen schon bei der Compilierung
zurückweist.

> Ich kann Dir nur empfehlen (entegegen allen anderen Meinungen),
> diese Syntax zu verwenden.

Andere Meinungen gab's doch gar nicht viele. ;-)

Gruß

Philipp Stiefel

unread,
Dec 3, 2001, 4:17:08 PM12/3/01
to
Frank Hammerschmidt <Frank.Ham...@gmx.de> schrieb:

> Philipp Stiefel schrieb
>
>> Mir persönlich ist es relativ egal was schneller ist, weil ich die
>> Forms("")-Syntax wesentlich sauberer finde und ich sie schon deshalb
>> vorziehe. Außerdem möchte ich mich mental auf .NET vorbereiten. Dort
>> gibt es keine Standard-Eigenschaften mehr, d.h. man muss sich
>> sowieso auf Controls(""), Fields("") usw. umstellen.
>
> Nix da, es wird ein integer erwartet:

Joo, is scho recht.

Man verzeihe mir meine Ungenauigkeit, ich wollte in erster Linie
darauf hinaus, dass es keine verkürzte Schreibweise über Standard-
eigenschaften gibt. Die Beispiele mit den Collections oben waren
da etwas irreführend.

Gruß

Rudi Tüscher

unread,
Dec 3, 2001, 6:02:37 AM12/3/01
to

"Harald Langer" <in...@access-guru.de> schrieb im Newsbeitrag
news:elem0uguhuhhg8etq...@4ax.com...
> Würde mich interessieren, was da im 2000er-ADH steht.
>
> Ich zitiere aus dem 97er-ADH:
> Bang(!) versus Dot (.)
> The bang (!) and sot (.) identifier operators help describe the
> relationships among collections, objects, and properties in an
> expression. They indicate that one part of an expression belongs to
> another.
> In general, you follow the bang with the name of something you
> created: a form, report, or control. The bang also indicates that the
> item to follow is an element of a collection. You'll usually follow
> the dot with a property, collection or method name.
> You can also think of the uses of these operators this way: a bang
> separates an object from the collection it's in (a field in a table, a
> form in the Forms collection, a control on a form), while a dot
> separates an object from a property, method, or collection of that
> object.
>
> Ähmm... ja... bestätigt eigentlich meine Haltung.
>
ich schreibe jetzt nicht übermässig ab, soviel:
Es geht dann bei mir weiter mit:
"If you refer back to table 6.2, you'll see that there's always an
alternative to using the bang operator: you can use the parantheses and
quotes syntax.....
it turns out that behind the scenes, the former style of dot-and-bang
reference is translated to the latter style of parantheses-and-quotes
reference.....our recommendation, and the style we followed throughout this
book, is to always use the parentheses and quotes format.... unless it's
absolutely necessary to use the bang operator " (gemeint: query mit form
field parameter) etcetc. Am Schluss noch ein TIP in Kasten: "it's a hard
habit to break " etc.etc.

> Ach, die jungen Hupfer... ;-)

na ja, flexibel auf jeden Fall :-)

Beste Grüsse

Harald Langer

unread,
Dec 4, 2001, 4:28:14 AM12/4/01
to
Hallo Rudi,

"Rudi Tüscher" schrieb jede Menge zur Verwendung von Punkten,
Ausrufezeichen und Klammern aus dem 2000er ADH...
>"Harald Langer" zeigte seine Uninformiertheit...

>> Würde mich interessieren, was da im 2000er-ADH steht.
>>

>ich schreibe jetzt nicht übermässig ab, soviel:

Oohh... Mist... ;-)

Im Ernst: Vielen Dank für die Info; war mir nicht bekannt.

>> Ach, die jungen Hupfer... ;-)
>
>na ja, flexibel auf jeden Fall :-)

Nun denn, Alter schützt nicht vor Flexibilität.

Schönen Tag noch
Harald
--
www.access-guru.de

0 new messages