PDA

Vollständige Version anzeigen : kaskadierende Verweise


guenther_p
24.04.2011, 16:55
Hallo Leute

Hab ein Verhalten, das mir nicht ganz einleuchtet. Zu Testzwecken habe ich nachfolgende Struktur von Verweisen aufgebaut

Enkel.mdb
I
---> Kind.mdb
I
---> Vater.mdb

Vater enthält eine Public Varibale namens ein_Public und eine Public Funktion namens eine_Funktion.

Wenn ich nun in Enkel.mdb in einer Procedure folgendes eingebe

MsgBox Enkel.kind.vater.ein_Public

bekomme ich beim Kompilieren den Fehler "Methode oder Datenobjekt nicht gefunden"

nachdem ich im Direktfenster ? Enkel.kind.vater.eine_Funktion ausgeführt habe - was auf Anhieb problemlos funktioniert - kann ich die Procedure auch kompilieren.

hat jemand sachdienliche Hinweise

PS es ist mir klar, dass ich eine flachere Verweisstruktur machen kann

Gruß
Günther

avogt_at_home
24.04.2011, 18:28
Hallo,
du hast 3 versch. Datenbanken und willst über alle hinweg auf Prozeduren hinzugreifen? Das geht schon, aber macht es sinn?
Was ist wenn der Enkel Kinder bekommt, wird er dann zum Vater und fliegt er aus der einen DB raus in die andere?

Mir erschließt sich der Sinn noch nicht so richtig.
Warum machst du das nicht in 1 MDB?
Zum Objekt brauchst du doch nur die ElternID schreiben.

Gruß Andreas

Marsu65
24.04.2011, 18:46
Hallo,
ich kann mich erinnern, dass Thomas Möller (http://www.team-moeller.de)in seinem Add-In-Script erwähnte, dass Verweise über mehrere DB-Ebenen so ihre Macken haben.

Das Script ist a.a.O. unter den Downloads zu finden.

guenther_p
24.04.2011, 18:52
... Was ist wenn der Enkel Kinder bekommt, wird er dann zum Vater..

... da hätte er wohl eine Generation übersprungen ;)

... Mir erschließt sich der Sinn noch nicht so richtig.

kenne das aus C mit den .h-Files, da war das Standard

Zum Objekt brauchst du doch nur die ElternID schreiben.

nur ElternID funktioniert nur bei direktem Verweis. Wie beschrieben funktioniert Stufigkeit bei mir im ersten Moment überhaupt nicht. Auf die Sache mit dem Direktfenster bin ich nur gekommen, weil ich Varianten probieren wollte (. oder !).


Gruß
Günther

Lanz Rudolf
24.04.2011, 21:51
Hallo
weiss nicht ob Dir das was ich hier habe
http://cid-0838611f737bd3d9.office.live.com/self.aspx/ACC/ACCESS%202000BU%20Begleitunterlagen.pdf
auf Seite 190 (8.35 Öffnen von Formularen und Berichten aus einer anderen MDB)
seite 191 (Funktion aus einer anderen MDB ausführen)
etwas Hilft

guenther_p
25.04.2011, 17:55
Danke Ruedi!

auch ein interessanter Ansatz...

Hier geht es mir aber darum, dass ich gerne meine Funktionen ganz normal aufrufen würde, so wie bei einfachen Verweisen auch (am liebsten auch ohne die ganze Qualifizierung "kind.vater.")

habe mir die Doku von Thomas Möller "Add-Ins unter Microsoft Access 2000" angesehen. Bin in diesem Punkt aber leider auch nicht schlauer geworden.

Gruß
Günther

ebs17
25.04.2011, 18:34
Hier geht es mir aber darum, dass ich gerne meine Funktionen ganz normal aufrufen würde
Warum verwendest Du dann nicht ein Frontend?
Gerne auch unterstützt durch eine Code-Bibliothek - da hattest Du aber auch schon eigene Vorstellungen.
Varianten probieren
Ist das das eigentliche Anliegen? Von der Fernsteuerung eines Frontends durch ein weiteres halte ich nicht sehr viel, von einer geschachtelten Fernsteuerung um so weniger.

guenther_p
25.04.2011, 19:08
tu mich gerade etwas schwer mit dem letzten Beitrag

Warum verwendest Du dann nicht ein Frontend?

Frontend/Backend ist für mich der Begriff für die Trennung von Präsentation und Daten. Wie spielt das im hier genannten Umfeld mit?

Gerne auch unterstützt durch eine Code-Bibliothek - da hattest Du aber auch schon eigene Vorstellungen.

von welchen eigenen Vorstellungen sprichst Du?

...Fernsteuerung eines Frontends ...

hatte dazu noch nie einen Beitrag und plane so etwas auch nicht.

Möchte daher wieder auf meine offenen Punkte zurückführen


schreibe ich die Aufrufe falsch?
ist das erklärbar mit dem Kompilier-Erfolg in Abhängigkeit von der Eingabe im Direktfenster
gibt es andere Quellen/Erfahrungen (ausser bei Hr Möller), die dazu raten die Finger von den beschriebenen Hierarchien zu lassen



Gruß
Günther

Marsu65
25.04.2011, 19:58
gibt es andere Quellen/Erfahrungen (ausser bei Hr Möller), die dazu raten die Finger von den beschriebenen Hierarchien zu lassen
Wahrscheinlich ist es nicht üblich, sodass sich nur wenige mit diesem Problem beschäftigen ;)

Auch wenn es verpöhnt ist eine Frage mit einer Gegenfrage zu beantworten.
Wozu dient diese Verschachtelung? Ist das experimentelles Interesse deinerseits oder steckt da ein konkreter Anwendungsfall hinter?

guenther_p
26.04.2011, 07:08
Ist momentan eher experimentell.

Habe in einem früheren Posting den Hinweis auf Mehrfachverweise bekommen. Das wollte ich näher erforschen (z.B. die Frage ob Public-Variablen korrekt versorgt/angesprochen werden).

Die ersten Versuche haben dann gleich weitere Fragen aufgebracht. z.B. wie kann ich Funktionen ansprechen, egal auf welcher Hierarchie-Ebene der Verweise sie liegt (einfach so als ob sie Public wären).

Dann kam eben noch der Zufall mit dem Direktfenster ins Spiel.

Würde den Themenkreis mit Unterstützung gerne weiter vertiefen.

Gruß
Günther

Toast78
26.04.2011, 07:10
Meine Ausbildung ist jetzt schon ca. 10 Jahre her. Wir hatten da ein Warenwirtschaftssystem und da war es so, dass man immer nur eine Ebene oberhalb aufrufen kann.
D.h. will Enkel Funktionen aus Vater verwenden, so wird auch ein Verweis in Enkel auf Vater benötigt.

Josef P.
26.04.2011, 07:59
Hallo!

Würde den Themenkreis mit Unterstützung gerne weiter vertiefen.
Mit Beispiel-Dateien würde es vermutlich einfacher werden, dein Vorhaben zu erkennen.
Ich testete kurz einmal eine Struktur (DB2 verweist auf DB1 und DB3 verweist auf DB2 + Aufruf von InstanzAusDb3.K2.K1.Variable) und konnte kein Problem feststellen.

mfg
Josef

guenther_p
26.04.2011, 15:02
hier meine drei DBS

Funkton Test im Enkel lässt sich nicht kompilieren

Gruß
Günther

Josef P.
26.04.2011, 16:26
Hallo!

Aufgrund welcher VBA/VB6-Syntax erwartest du, dass <code>MsgBox enkel.Kind.Vater.ein_public</code> funktioniert?
Auf die Idee mehrere Bibliotheksnamen hintereinander zu schreiben wäre ich nicht gekommen. ;)

In Beitrag #12 ging ich davon aus, dass "Enkel", "Kind" und "Vater" Methoden oder Eigenschaften einer Klasse sind.

Mir fällt es gerade schwer, denn Nutzen von deiner Variante zu erkennen.

mfg
Josef

guenther_p
26.04.2011, 17:51
eigentlich hätte ich mir erwartet/erhofft, dass z.B. schreibe 99 alleine funktioniert um eine Funktion aus Vater aufzurufen.

Nachdem IntelliSense auf enkel.kind. reagiert hat habe ich weiter experimentiert und bin auf die o.a. Besonderheit mit dem Direktfenster gestossen.

... und sowas macht mich halt neugierig. :)

Gruß
Günther

guenther_p
30.04.2011, 20:13
habe auf gut Glück verschiede Dinge (Private/Public) probiert, mir sind aber keine weiteren Punkte aufgefallen.

Liegt natürlich daran, das ich immer noch nicht verstehe, was der Aufruf im Direktfenster umstellt.

Interessant wäre auch, ob man dieses "umstellen" auch per Code herbeiführen könnte.

Gruß
Günther

Josef P.
01.05.2011, 09:45
Hallo!

Es wäre zwar interessant zu wissen, was im Hintergrund passiert, ich erkenne aber keinen praktischen Nutzen an diesem Verhalten.

Der Zugriff auf eine Bibliothek, die in einer anderen Bibliothek verwendet wird, betrachte ich sogar als schlechten Stil, da der Zugriff scheitert, sobald die Bibliothek geändert wird und der Verweis nicht mehr benötigt wird.
Zum Programmieren würde ich immer nur die öffentliche Schnittstelle der Bibliothek verwenden, auf die ich einen Verweis setzte.

mfg
Josef