PDA

Vollständige Version anzeigen : MDE und Bibliotheksverweise


MRR
20.10.2001, 11:40
Hallo Experten,
2 Fragen hab' ich heute:
1. Ich will aus der Datenbank eine MDE-Datei erstellen. Die Datenbank hat unter Extras/Start ein Startformular angegeben. Dieses wird anstandslos beim normalen Öffnen der DB gestartet, das gesamte Programm läuft einwandfrei. Alle Module lassen sich ebenso problemlos kompilieren. Die DB hat zusätzlich einen Verweis auf die Excel 8.0-Bibliothek. Der Versuch, die MDE-Datei zu erzeugen, schlägt fehl: "Kompilierungsfehler in verborgenem Modul: Form_Start". Weitere Hinweise erhalte ich leider nicht.
2. Wenn ich Verweise auf andere Bibltiotheken erstellt habe und die DB weitergebe: Ist dann auf dem Zielrechner sichergestellt, dass alle Verweise funktionieren? Oder soll bzw. muss man entsprechende Überprüfungen vornehmen? Wenn ja: Wie?
Ich danke allen, die sich hier abmühen und den kleinen DAUs auch am Samstag ihre Zeit geben!
Ich wünsche Euch einen schönen Sams- und auch Sonntag.

P.S. Bisher war ich hier als "Pepi" unterwegs, habe mich jetzt aber wie auch in anderen Foren zu "MRR" entschlossen.

erwin
20.10.2001, 14:10
ja,ja die "beliebten" Verweise zur Vertiefung (dh. nach FAQ's bei donkarl.com) lies noch <a href="http://www.trigeminal.com/usenet/usenet026.asp?1031">das hier</a>

HTH erwin...

MRR
21.10.2001, 10:27
Dank zunächst an Erwin.
Ich habe mir natürlich die Seite(n) bei Donkarl angesehen, jedoch: Alle auch dort angegebenen Hilfen führten nicht weiter. Lediglich folgendes funktionierte: Als ich den Verweis auf die DAO 3.51 gelöscht und statt dessen DAO 3.6 angegeben habe, ging es. Ähnliches hatte ich vor einiger Zeit schon mal erlebt. Dort war es aber problemlos möglich, anschliessend wieder auf DAO 3.51 zurückzusetzen - was jetzt nicht geht.
Wo liegt eigentlich der Unterschied in diesen beiden Bibliotheken? Und - zurück zu meiner 2. Eingangsfrage - was muss ich tun um sicherzustellen, dass eine Datenbank auf dem Zielrechner auch tatsächlich läuft (und nicht irgendwelche Fehlermeldungen erscheinen, weil eine Bibl. nicht gefunden wurde)?
Vielen Dank erneut!

erwin
21.10.2001, 11:03
ääähmmm...

ist der o.a. Link tot oder bist du dem ihm nicht gefolgt - der geht NICHT zu donkarl - oder hattu Probleme mit dem englischen Artikel ?

fragt sich erwin...

MRR
21.10.2001, 11:19
Hi erwin,
sorry - ich hatte den Artikel nur überflogen, war parallel auf anderen Seiten, der IE stürzte ab - und dann hatte ich vergessen, was ich alles tun wollte oder am machen war. Und Probleme mit der englischen Seite habe ich auch nicht - ich kann Seiten auch in französisch, italienisch, in Grundzügen in spanisch und - was wohl eher selten der Fall sein wird - in altägyptisch lesen (und auch verstehen). Ich hab' mir die Seite jetzt ausgedruckt und werde sie mir offline dann mal zu Gemüte führen. Es tut mir leid, wenn Du der Auffassung gewesen bist, dass ich Deine Hilfe nicht zu schätzen weiss - das tue ich sehr wohl. Ich gebe selber viel und gerne Hilfe (meist bei Herber.de) und kann sehr wohl verstehen, wenn eine kleine "Mißstimmung" aufgekommen ist. Also nochmals: Sorry!
Dir - und allen anderen - einen schönen Sonntag - denn anscheinend Viele doch mit arbeiten zubringen...

Sascha Trowitzsch
21.10.2001, 11:28
Also ich setze die Verweise *alle* im Startcode einer MDE, also dem AutoExec-Code, mit Set Reference = ... in möglichst sinniger Reihenfolge.
Ich hatte allerdings o.g. Probleme noch nicht.
Mike Kaplans 9 Schritten zu folgen ist natürlich erheblicher Aufwand. Du kannst es ja mal proieren.

( @ Erwin: Hast du das mal gemacht, mit all den VBA.MethodeSowieso-Deklarationen usw., wie Mike das vorschlägt? )

MRR, mir scheint, das mit den Verweisen ist dir nicht ganz klar.
*Verweise* müssen nicht auf dem Zielrechner vorhanden sein, sondern die entsprechenden DLLs, OCXe oder EXEs, auf die sie sich beziehen. Die Verweis-Bibliotheken bei der Entwicklung erzeugen lediglich in den Modulen den Code, der zum Ansprechen der DLLs notwendig ist.
Es muss also auf dem Zielrechner sichergestellt sein, dass die entspr. Dateien - und zwar die richtigen Versionen - vorhanden sind. Wenn man auf Excel8 verweist, sollte auch Excel97 (möglichst mit SR1,2) vorhanden sein ;-)

( Nach meiner Erfahrung gibt es oft Probleme, wenn auf dem Zielrechner eine veraltete oleaut32.dll drauf ist. Das ist in allen Office-Applikationen eine zentrale DLL. Mit deinem Problem hat es aber wohl nichts zu tun.)

Ciao, Sascha

peppi
21.10.2001, 11:45
@Sascha,

Deine Aussage Also ich setze die Verweise *alle* im Startcode einer MDE, also dem AutoExec-Code, mit Set Reference = ... in möglichst sinniger Reihenfolge hört sich gut an. - Was ist eine "sinnige" Reihenfolge??
Wäre es möglich, so einen "Startcode" mal hier zu posten?

erwin
21.10.2001, 16:09
@MRR

also mit dem Icon wollte ich keinerlei "Misstimmung" ausdrücken, es gibt ja auch "Computerianer" die des Englischen nicht mächtig sind - sobald ich einen Artikel in altägyptisch gefunden habe, sag' ich dir Bescheid... :D

@sascha

tja - mangels akutem Anlassfall, sowie Schreibfaulheit - NEIN ;)

Allerdings müsste es ja reichen, die "Vollreferenzierung" in nur in jenem Modul, wo der Code für den initialen "Ref.Check" drinnen ist, zu machen. Ich habe allerdings noch nicht selbst getestet, ob "eigenständige" Module tatsächlich erst beim Erstverwendung irgendeiner Sub/Fu. geladen werden - weisst du da genaueres.

@ peppi

Die "Sinnigkeit" der Reihenfolge (abgesehen von den Standardref's VBA, Access, DAO/ADO) ergibt sich wohl aus deiner App. daher "Fremd"-Obj. nach deren (vermutllicher) Häufigkeit der Verwendung im Code (bzw. deren Entbehrlichkeit) i.d. References Auflistung ordnen.

so long erwin...

Sascha Trowitzsch
22.10.2001, 00:10
@ erwin:
Doch das ist so. Erst beim Verwenden der entspr. Funktion wird das Modul geladen, ähnlich wie bei normalen DLLs in Programmen. Deshalb ist es auch sinnvoll, Code auf möglichst viele Module zu verteilen, also häufig verwendete Funktionen alle in ein Modul, die seltener verwendeten in viele einzelne. Das erhöht die Performance.
Das hab ich aus irgendeinem Nollidsch-Bäs-Artikel. (Warum haben die nur so blöde Zahlennamen und kein ordentliches Inhaltsverzeichnis...)

Ciao, Sascha

PS: Mir fällt da auf: So wie man DLLs in Programmen mit API LoadLibrary laden kann, geht das dann wohl auch in VBA, indem man in jedem Modul eine Dummy-Sub definiert und durch Aufruf dieser das Modul laden kann.
Aber das ist wohl eher Spielerei.

erwin
22.10.2001, 19:09
@sascha

tja, dann war meine "Intuition" richtig ;)

THX für die Bestätigung, sagt erwin...

MRR
22.10.2001, 22:25
Hallo zusammen,
erst einmal herzlichen Dank für Eure Beiträge! Einige Fragen noch dazu:
@Sascha,
dass die Verweise nicht auf dem Zielrechner vorhanden sein müssen, ist mir klar, aber: Wenn ich mit Set Reference arbeite, müssen die DLLs (oder was auch sonst) jeweils im selben Pfad vorhanden sein, oder? Sollte man dann für jede verwendete/benötigte Datei prüfen, ob sie vorhanden ist? Und wenn nicht an der erwarteten Stelle, sie per Code suchen und dann den entsprechenden Verweis auf diese Datei setzen, evtl. nach vorheriger Überprüfung auf die richtige Versionsnummer (das dann evtl. mit einem (weiteren) API-Aufruf)? Oder wie würde man das sinnigerweise tun - die richtigen Referenzen zu finden? Gibt es die Anweisung "Set Reference" nur in Access-VBA? In Excel oder Word finde ich sie nämlich nicht? Wenn ja: Wieso?

@erwin,
ich habe keine Misstimmung gehabt - ganz im Gegenteil! Aber ich gebe Dir recht: Es gibt tatsächlich eine Menge von Leuten, die sich an die Programmierung wagen, und weder deutsch noch englisch annähernd richtig beherrschen. Insofern ist Deine Bemerkung durchaus gerechtfertigt.