Hallo,
in Access 97 habe ich in einer von mir erstellten Datenbank
eine Variable als Public deklariert.
Trotzdem erscheint in einem Formular der selben Datenbank
der Fehlerhinweis, dass diese Variable nicht deklariert ist.
Eine Public-Variable gilt doch auch für Formulare, Berichte etc.
der selben Datenbank. Oder?
…Deine Variable wird in diesem Fall wohl zu spät geboren
und stirbt zu früh.
Eine im Deklarationsbereich (gaaaaanz oben) eines Formularmoduls
definierte Variable vom Typ public lebt leider nur innerhalb dieses Moduls (ist also nur für die dortigen Prozeduren sichtbar, daher Deine Fehlermeldung, wenn Du in einem anderen Modul -sprich Formular/Bericht- die Variable ansprechen bzw. auswerten willst).
Die längsten Überlebenschancen haben diese Variablen, wenn sie als globale Variablen definiert sind (also z.B. im Deklarationsbereich einer Funktion, die automatisch beim Starten der DB (Makro autoexec erstellen, Aktion: AusführenCode,
Funktionsname: DeinFunktionsname() )
oder z.B. durch die „Beim Öffnen“-Eigenschaft Deines Hauptformulars aufgerufen wird.
Eine so angelegte Variable steht Dir überall zur Vefügung, solange die DB geöffnet ist.
Stephan
Hallo Stephan,
zunächst vielen Dank für Deinen Antwortartikel.
Im Datenbankfenster befindet sich neben Formulare,
Berichte etc. auch ein Karteireiter „Module“.
Ist es möglich, dort ein Modul mit allgemeinen
Deklarationen, wie z. B. Public-Variablen, die
für die gesamte Datenbank gültig sind, zu installieren?
Nach meiner Vorstellung sollte dieses Modul dann
dann über das von Dir angesprochene Makro „Autoexec“
beim Öffnen der Datenbank gelesen werden.
Ich habe dies schon versucht, das hat jedoch leider
nicht funktioniert. Für Tipps wäre ich dankbar. Tschüss.
Modul: neu
direkt unter den beiden Kopfzeilen
Option explicit
Option Compare database
könnte dann stehen
public var as string
public var2 as long
usw., was Du halt brauchst
dann gehts etwa so weiter mit
function EinFunktionsname()
docmd.openform („DeinHauptformular“) 'oder was auch immer
'var = „Irgendwas“
'var2 = 5
'für den fall, daß die Variablen bereits initialisiert werden sollen
end function
Im Makro mit Namen „autoexec“ dann nur eine Aktion:
AusführenCode
Argument: EinFunktionsname()
Das sollte so gehen.
Wenn nicht, kann ich derzeit nicht weiterhelfen, da Urlaub ab sofort und up, up and away!
Stephan
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Stephan,
hab’s ausprobiert und es funktioniert wunderbar.
Danke nochmal für den Tipp und schönen Urlaub.
Tschüss.