Hallo Leute,
Ich bin kein Experte in VBA aber ich suche eine Lösung für ein womöglich ganz einfaches Problem.
Ich möchte eine Variabel z.B strPATH nur einmal deklarieren, welche im gesamten Projekt (in allen Formularen) die gleiche bleibt.
Bei der Variabel handelt es sich um einen Ordnerpfad, welcher in einer Tabelle abgespeichert wird und beim Öffnen des Hauptformulars aus der Tabelle ausgelesen werden soll.
In all meinen Formularen des gleichen Projektes kommt dieser Pfad sehr oft im Quellcode wieder.
Ist mein Vorhaben so einfach möglich?
Ich möchte Vermeiden dass mein strPATH beim laden jeden Formulars erneut deklariert und aus der Tabelle ausgelesen wird.
Sinn und Zweck bei dem Ganzen ist, dass jeder User seine eigenen Formulare erhält da meine Datenbank gesplittet wurde.
Jeder User speichert seine Daten im Pfad strPATH, welcher eben bei jedem User ein anderer Pfad sein kann.
Hab ich das halbwegs klar erklärt?
Danke im Voraus
MfG
Hallo,
ZitatIch möchte Vermeiden dass mein strPATH beim laden jeden Formulars erneut deklariert und aus der Tabelle ausgelesen wird.
warum, hole den Wert wenn Du ihn brauchst aus der Tabelle. Dazu ist die Tabelle da.
ZitatJeder User speichert seine Daten im Pfad strPATH,
das verstehe ich nicht, wenn die DB geteilt ist, werden die Daten im Backend gespeichert, für alle.
Welche Daten speichert ein User für sich und das auch noch in einem frei wählbaren Pfad ?
Hallo,
ZitatBei der Variabel handelt es sich um einen Ordnerpfad, welcher in einer Tabelle abgespeichert wird und beim Öffnen des Hauptformulars aus der Tabelle ausgelesen werden soll.
kein Problem, das kannst du doch ganz genau so wie geplant umsetzen, indem du den Pfad beim Start ausliest und in einer globalen Variablen speicherst, auf die du anschließend von überall her zugreifen kannst.
-->> Was genau ist dein Problem, wobei benötigst du Hilfestellung?
Allerdings sollte es auch ohne weiteres möglich sein, den Pfad wo immer er benötigt wird bspw. mit der DLookUp-Methode auszulesen.
Die Entscheidung für den einen oder anderen Weg ist wohl eher "philosophischer" Art und hat nichts mit Performance zu tun.
Hallo,
Wegen Philosophie, ich verwende für sowas Public Properties, da "verschwindet" der Wert nicht bei LZ-Fehlern.
Private m_strPATH As String
Public Property Get SpPfad() as String
If (m_strPfad & vbNullString) = vbNullString Then
m_strPfad = DLookup("FeldMitPfad","TabelleMitPfaden","BedingungFallsErforderlich")
Else
SpPfad = m_strPfad
end If
End Property
Auf diese Weise brauchst Du auch beim Start der Anwendung nicht extra den Pfad auslesen. Das passiert so automatisch bei der ersten Verwendung (Irgendwas = SpPfad)
hth
ekkehard
@ MzKlMu
Du hast recht, dass ich den Wert aus der Tabelle nehmen soll. Ich möchte dies ja auch, aber eben nicht bei jedem Formular erneut. Ich möchte die strPATH beim Laden des Hauptformulars, und nur dieses eine mal, aus der Tabelle auslesen und dann für alle Formulare zur Verfügung haben.
Zu der Teilung der DB:
Mein Frontend begreift Formulare und Berichte und eine Tabelle mit persönlichen Einstellungen (wie eben auch der Ordnerpfad).
Wenn ich dann ein neues Frontend verteile, muss der Code nicht für verschiedene User angepasst werden. Nicht alle haben z.B. die gleichen Systeme, Druckernamen, Ordnerstrukturen.
Vom Frontend gibt es dann Verlinkungen zu der eigentlichen Datenbank mit den Tabellen.
Danke an alle für die DLOOKUP-Variante
Beaker's Code scheint das zu sein was ich benötige, falls diese Variable dann in jedem Formular zur Verfügung steht.
Werde das am Abend mal testen.
Danke.
Hallo,
ZitatWenn ich dann ein neues Frontend verteile, muss der Code nicht für verschiedene User angepasst werden.
aber die User müssen ihre persönlichen Einstellungen erneut vornehmen - oder wie sieht das aus?
Hallo Marc,
ZitatIch möchte die strPATH beim Laden des Hauptformulars, ... auslesen
Brauchst bzw. kannst Du mit dem Code gar nicht, da die Property schreibgeschützt ist (keine Property Let). So wie ich die Property Get geschrieben habe wird der Pfad bei der ERSTEN Verwendung ausgelesen (oder falls Access ihn aus irgendeinem Grunde "vergisst"). Sowas nennt sich, glaube ich, eine Factory-Prozedur.
ZitatBeaker's Code scheint das zu sein was ich benötige, falls diese Variable dann in jedem Formular zur Verfügung steht.
Nicht nur in allen Formularen, sondern anwendungsweit, will sagen von "überall". Allerdings nur wenn Du die Property in ein allgemeines Modul schreibst. Im HFo würde es nur funzen, wenn dieses geöffnet ist.
gruss ekkehard
Ups, mein Denkfehler Maggie. Gut aufgepasst :-)
Dann wird es eine Textdatei oder eine Mini-Datenbank werden, welche jeder Benutzer auf seinem System speichert.
Hallo Marc,
ZitatDann wird es eine Textdatei oder eine Mini-Datenbank werden, welche jeder Benutzer auf seinem System speichert
Nicht, dass ich dir dabei jetzt helfen könnte, aber Du kannst für sowas auch die Registry hernehmen. Passende Hinweise, wie das geht findest Du sicher im Netz, oder auch schon hier. Da hat bestimmt jemand einen passenden Link.
gruss ekkehard
Danke Beaker aber ich muss die Möglichkeit der Registry umgehen, da nicht alle User, mich inbegriffen, Adminrechte auf Ihren Rechnern haben.
Das Projekt wurde programmiert um die tägliche Arbeit enorm zu erleichtern. Der Arbeitgeber wird aber nicht unterstützen, dass auf den Rechnern "herumgespielt" wird. Ich bin ja kein gelernter Datenbankentwickler.
Hallo Marc,
Muss ja auch nicht, - eine kleine .txt reicht dazu ja aus.
gruss ekkehard
Hallo,
ich würde hier als Alternative zu einer internen Tabelle eine ini-Datei empfehlen, da kann man dann auch gezielt auf ganz bestimmte Einträge zugreifen. Ist ganz leicht zu handhaben, muss man nur mal ein bißchen googeln... ;-)
Oder konkrete Angaben machen was gebraucht wird oder ein Muster der jetzigen Tabelle hochladen, damit man sieht worum es geht und etwas konkretere Vorschläge machen kann.