Problem mit Pfaden zu Verweisen

24/09/2007 - 14:04 von Mark Schneider | Report spam
Hallo,

wir haben eine Access-Anwendung zur Kundenverwaltung wie folgt
aufgesplittet:
"kvadmin.ade" beinhaltet die administrativen Aufgaben
"kvbasic.ade" ist für alle zugànglich
"kvlager.ade" beinhaltet die Lagerverwaltung
"kvlibrary.mde" gemeinsame, von allen genutze Module/Formulare

admin, basic und lager beinhalten einen Verweis auf "kvlibrary.mde"

Backend ist SQL Server 2000.

Die User haben keine lokalen Laufwerke auf die wir etwas
installieren könnten, sondern rufen ihre Anwendung
aus dem Netzwerk auf (jeder aber aus seinem eigenen Userpfad).

Jeder User hat sein Profil-Laufwerk als g: gemappt
Also ist die Anwendung immer in g:\kvapp\ zu finden, dahinter können
aber unterschiedliche Mappings stecken.
z. B. hat User Horst Müller per g:\kvapp Zugriff auf
\\kvserver\profiles\muellerhorst\kvapp\
wàhrend Elke Mustermann per g:\kvapp auf
\\kvserver\profiles\mustermanne\kvapp\
zugreift

Problem:
Ich würde gerne die Anwendung einmal "kompilieren" (adp>ade, mdb>mde)
und dann in alle Userverzeichnisse kopieren, allerdings stimmt dann
der Pfad zum Verweis auf "kvlibrary.mde" nicht mehr, denn
beim Setzen des Verweises wird nicht etwa
"G:\kvapp\kvlibrary.mde" gespeichert, sondern es wird immer in einen
UNC-Pfad aufgelöst, z.B.
\\kvserver\profiles\mustermannelke\kvapp\kvlibrary.mde
(können wir mit einem Hexeditor auch leicht verifizieren)

D.h. wenn wir dann die Applikation im "kompilierten" Zustand von
z.B. von mustermannelke nach muellerhorst kopieren, greift die Anwendung,
sobald Horst Müller sie startet immer noch auf die "kvlibrary.mde" von
mustermannelke zu. Auf diesen Pfad hat er aber keine Rechte, daher
scheitert die Ausführung der ganzen Applikation.

Wir wollen aber nicht in jedem Ordner für jeden User die
Anwendung neu aus "kompilieren" und jeweils vorher die Pfade umsetzen.
Gibt es keine Möglichkeit, Verweise mit relativen Pfaden oder
HARTEN Laufwerkspfaden (statt UNC-Pfaden) zu setzen?
Auch dürfen nicht alle auf EINE kvlibrary.mde verweisen, da sonst wieder
Dutzende User die gleiche Datei benutzen würden.

Ideal wàre, wenn wir die Anwendung aus den .adps/.mdbs in unserem
Adminordner entwickeln/"kompilieren" könnten und dann einfach in
alle Userordner kopieren lassen (per Script).

Hat jemand eine schlaue/erschreckend einfache/spektakulàre/simple Idee?

Liebe Grüße
Mark
 

Lesen sie die antworten

#1 Henry Habermacher
24/09/2007 - 14:23 | Warnen spam
Hallo Mark

Mark Schneider wrote:
Jeder User hat sein Profil-Laufwerk als g: gemappt
Also ist die Anwendung immer in g:\kvapp\ zu finden, dahinter können
aber unterschiedliche Mappings stecken.
z. B. hat User Horst Müller per g:\kvapp Zugriff auf
\\kvserver\profiles\muellerhorst\kvapp\
wàhrend Elke Mustermann per g:\kvapp auf
\\kvserver\profiles\mustermanne\kvapp\
zugreift



Das ist eine schlechte Idee. Besser wàre es z.B. UserMappings zu machen,
welche einen Benutzernamen unabhàngigen Pfad beinhaltet, der bei allen
Benutzern gleich ist.
z.B. sollte es in einem Login Script möglich sein
\\kvserver\profiles\%USERNAME%\ auf das Drive V: zu mappen. Dann kannst Du
die Verweise auf V laufen lassen.

Problem:
Ich würde gerne die Anwendung einmal "kompilieren" (adp>ade, mdb>mde)
und dann in alle Userverzeichnisse kopieren, allerdings stimmt dann
der Pfad zum Verweis auf "kvlibrary.mde" nicht mehr, denn
beim Setzen des Verweises wird nicht etwa
"G:\kvapp\kvlibrary.mde" gespeichert, sondern es wird immer in einen
UNC-Pfad aufgelöst, z.B.
\\kvserver\profiles\mustermannelke\kvapp\kvlibrary.mde
(können wir mit einem Hexeditor auch leicht verifizieren)



Es gibt keine (dokumentierte) Möglichkeit, die Verweise in der MDE zu
korrigieren. Dadurch würde der Code invalid und müsste neu kompiliert
werden, was jedoch aufgrund des fehlenden kanonischen Codes (Textcode) nich
möglich ist. Das heisst, die eigentliche Anwendung muss immer als MDB zur
Verfügung stehen, wenn Du zur laufzeit die Verweise àndern willst, die
Verwiesenen MDEs, rsp. ADEs dürfen allerdings in einer kompilierten, vom
kanonischen Code befreiten Version vorliegen.

D.h. wenn wir dann die Applikation im "kompilierten" Zustand von
z.B. von mustermannelke nach muellerhorst kopieren, greift die Anwendung,
sobald Horst Müller sie startet immer noch auf die "kvlibrary.mde" von
mustermannelke zu. Auf diesen Pfad hat er aber keine Rechte, daher
scheitert die Ausführung der ganzen Applikation.



Ist klar, muss wohl so sein.

Wir wollen aber nicht in jedem Ordner für jeden User die
Anwendung neu aus "kompilieren" und jeweils vorher die Pfade umsetzen.



Aber allen Benutzern einen identischen Share geben.

Gibt es keine Möglichkeit, Verweise mit relativen Pfaden oder
HARTEN Laufwerkspfaden (statt UNC-Pfaden) zu setzen?
Auch dürfen nicht alle auf EINE kvlibrary.mde verweisen, da sonst wieder
Dutzende User die gleiche Datei benutzen würden.

Ideal wàre, wenn wir die Anwendung aus den .adps/.mdbs in unserem
Adminordner entwickeln/"kompilieren" könnten und dann einfach in
alle Userordner kopieren lassen (per Script).

Hat jemand eine schlaue/erschreckend einfache/spektakulàre/simple Idee?



Um ganz ehrlich zu sein: Die sicherste, stabilste und schnellste Version,
ist auf eingelinkte MDEs/ADEs zu verzichten. Ihr solltet die Anwendung so
umbauen, dass ihr vor dem erzeugen der FE die eingelinkten Anwendungsteile
in den Source importiert und dann als ein grosser Block die FE erstellt.
Damit werdet ihr auf einen Schlag viele Probleme los.

Ich habe mal ein Produkt entwickelt (MDE Creator), der das macht, allerdings
nur für eine einzelne verwiesene Library MDB. Das tot hervorragend und hat
schon sehr oft bewàhrt.

In Eurem Fall mit den unterschiedlichen Modulen, würde ich mich mit Visual
Source Save auseinander setzen. Damit solltet ihr unterschiedliche
Anwendungen zusammenstellen können, die je nachdem diese oder andere
Komponenten beinhalten.

Das Ganze hat immer einen Hacken, bei dem dann ersichtlich wird, wie sauber
Benamsungen durchgesetzt wurden und wie durchdacht diese waren. Bei
eingelinkten MDEs werdet ihr keine Namenskonflikte bekommen, da der Scope
klar definiert ist. Wenn ihr allerdings importiert, sieht es anders aus,
dann habt ihr allenfalls plötzlich zwei globale Variablen oder Funktionen,
die gleich heissen aber nicht das gleiche tun. In diesem Fall werdet ihr
umbauen müssen.

Gruss
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen