Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: pahiti78 am August 13, 2012, 18:58:39

Titel: Öffentliche Gültigkeit
Beitrag von: pahiti78 am August 13, 2012, 18:58:39
Hallo Zusammen,
hab wieder einmal ein Problem. Und zwar hab ich mir jetzt so ein tolles AccessBuch gekauft, um die Programmierung von der Pieke auf zu lernen. Im Buch wird ein Beispiel behandelt, in welchem eine öffentliche Variable deklariert wird. Diese wird dann in einer Sub_Prozedur ein bestimmter Wert und zugewiesen und schließlich in einer anderen Prozedur der Wert übergeben. Anbei der Code... bItte nicht lachen...aber es haut bei mir nicht hin...
Vielleicht weiß jemand, warum ich zu blöd bin zum Abschreiben. Danke

Option Compare Database
Option Explicit

Dim m_intZahl As Integer

Sub ErfindeZahl()
m_intZahl = 12345
End Sub

Sub ZeigeZahl()
MsgBox m_intZahl
End Sub

Die Msgbox sollte den Wert 12345 augeben, gibt mir aber immer nur Null zurück. Hilfe!!
Titel: Re: Öffentliche Gültigkeit
Beitrag von: MzKlMu am August 13, 2012, 19:14:05
Hallo,
wo genau ist die Variable deklariert und wie rufst Du die beiden Subs auf.
Titel: Re: Öffentliche Gültigkeit
Beitrag von: bahasu am August 13, 2012, 19:46:22
Hi,

mit
     Public m_intZahl As Integer
wird es u.U. öffentlicher.  ;D

Vielleicht war es das.

Harald
Titel: Re: Öffentliche Gültigkeit
Beitrag von: pahiti78 am August 13, 2012, 20:50:26
Hallo Bahasu,
haut dennoch nicht hin.

Hallo MzKiMU,
ich starte die Subs mit F5. Ist halt wirklich nur nen Beispiel aus dem Buch.
Titel: Re: Öffentliche Gültigkeit
Beitrag von: pahiti78 am August 13, 2012, 20:52:32
Sorry, muss mich korrigieren. Mit Public wird es öffentlich. Danke
Titel: Re: Öffentliche Gültigkeit
Beitrag von: bahasu am August 13, 2012, 20:52:37
Hi,

habe es eben auch probiert.

Im Anhang ein Beispiel.

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: Öffentliche Gültigkeit
Beitrag von: Beaker s.a. am August 13, 2012, 21:45:14
Hallo,
Eine Member-Variable sollte immer Private sein.
Die Methoden für das Schreiben (Sub ErfindeZahl) und
Lesen (Sub ZeigeZahl) müssen Public sein, wenn Lese-
und Schreibzugriff von aussen möglich sein soll.
Im Prinzip sind seine Subs ja nichts anderes als (z. Zt.
private) Properties, also ohne Lese-/Schreibzugriff.
Bei mir würde das so aussehen (plus Prüfung und Fehler-
behandlung):
Option Compare Database
Option Explicit

Private m_Zahl as Integer

Public Property Let ZugriffAufZahl(intZahl As Integer)
    m_Zahl = intZahl
End Property

Public Property Get ZugriffAufZahl() As Integer
    ZugriffAufZahl = m_Zahl
End Property

Eine öffentliche Variable hat man "nicht im Griff",
will sagen, dass die bei einem Laufzeitfehler im Code
meistens ihren Wert verlieren (zurückgesetzt werden),
was zu falschen Ergebnissen führen kann, wenn man
das nicht mitbekommt. Eine Property-Prozedur kann
dass aber prüfen und evtl. korrigieren.
gruss ekkehard