PDA

Vollständige Version anzeigen : externe VBA-Routinen in mde einbinden


bassmju
23.01.2008, 06:21
Hallo,

ich habe eine Anwendung geschrieben, die je nach Aufgabenstellung, aus einer Tabelle die vorhandenen abgeschlossenen VBA-Routinen aufrufen kann. Bisher habe ich das so gelöst, dass ich das jeweilige VBA-Programm hinter ein Makro gelegt habe und dann in der Tabelle nur noch die Makros zur jeweiligen Aufgabenstellung organisieren muss.

So kann der Anwender in seiner mde später selbst zusammenstellen, welche Funktionen für die jeweilige Aufgabenstellung abzuarbeiten sind.

Nun möchte ich aber die Möglichkeit schaffen, dass der Anwender eigene Funktionen schreibt und diese dann zusätzlich einbinden kann. Da das in der mde nicht geht, müsste er eine externe mdb/mde erzeugen und dann in meiner Anwendung einen Verweis darauf setzen können, so dass seine eigenen Funktionen mit eingebunden werden.

Gibt es da einen Lösungsansatz? Ich bedanke mich schon einmal und freue mich über jede Rückmeldung.

Gruss
Micha

Anne Berg
23.01.2008, 10:32
Hallo Micha.

Das wird nicht gehen, da du in einer MDE wiederum nur einen Verweis auf eine MDE einrichten kannst, und zwar vor der Umwandlung! Das heißt, diesen Verweis kannst du auch nachträglich nicht mehr ändern. Und Änderungen an der referenzierten MDE führen zum Abbruch der Haupt-Anwendung.

Josef P.
23.01.2008, 10:40
Verweise könnten nachträglich nicht mehr gesetzt werden. Es wäre aber denkbar eine dll bzw. COM-dll ohne Verweiss zu verwenden.
Oder man macht es umgekehrt und bindet die Anwendungs-mde in die "Zusatzfunktions-mdb" ein.

Um welche Art von Funktionen handelt es sich eigentlich?
Einfach "einzeilige" Berechnungen oder komlpexere Routinen mit Schleifen u.ä.?
Vielleicht wäre es sogar möglich, die Notwendigkeit der benutzerdefinierten Funktionen über die Gestaltung der Tabellenstruktur zu eliminieren.

bassmju
23.01.2008, 11:17
Hallo Ihr Beiden,

erst einmal vielen Dank für die Rückmeldungen, mit denen ich schon mal was anfangen kann!

Die Aufgabenstellungen sind schon ziemlich umfangreich, es sind Software-Schnittstellen, die ich schon ziemlich dyn. gehalten habe und nun gern diese Erweiterung hätte, dass der Anwender auch ohne meine Entwicklung eigene Funktionen nutzen kann.

Bisher ist die Anwendung in Programm.mde und Work.mdb (mit allen ben.def. Tabellen und Konfigurationen) aufgeteilt, so dass ich bei Updates nur die Programm.mde ausliefern muss. Das läuft schon seit vielen Jahren sehr gut und stabil (auch dank der Hilfe hier im Forum - muss ja auch mal gesagt werden), so dass ich kaum eingreifen muss. Ich würde gern noch viel mehr "erschlagen", weil ich gerade etwas Luft habe und denke deshalb über so eine Lösung nach.

Das mit dem umgekehrten Weg klingt spannend und ich muss mir das mal überlegen.

Wenn ihr noch etwas dazu habt, freue ich mich natürlich.

Gruss
Micha

bassmju
23.01.2008, 11:22
könnte man nicht ein Tool einbauen, das eine Tabelle in einer Schleife durchläuft und dort den Namen der ext. DB mit dem Namen der Funktion/Makro hinterlegen. Das Haupt-Programm würde dann bei der Abarbeitung seiner Aufgaben in dieser Tabelle nachschauen, ob es zu dieser SST eine externe Aufgabe gibt und würde diese nach Priorität abarbeiten. Ich müsste also aus dem ext. Programm ein Result bekommen. Ist so etwas möglich?

LG
Micha

Josef P.
23.01.2008, 11:32
Vielleicht kommen auch Access-AddIns (mda) in Frage.
Da ich aber nicht weiß, was du unter einer "Funktion" , die die User selbst anlegen, verstehst und wie diese von der Hautpanwendung genutzt werden soll, ist es schwierig, eine Umsetzungsmöglichkeit anzudenken.

ebs17
23.01.2008, 12:10
Nun möchte ich aber die Möglichkeit schaffen, dass der Anwender eigene Funktionen schreibt ...

Wäre es nicht eine Möglichkeit, dem Anwender eine MDB in die Hand zu geben und die von Dir angelegten und schützenswerten Bestandteile von Haus aus in eine einzubindende MDE/MDA auszulagern. Nach der Beschreibung hat der Anwender Entwicklerfähigkeiten, die er so am besten ausleben könnte.

bassmju
23.01.2008, 12:16
der Anwender hat z.B. Daten aus einem Fremdprogramm (z.B. Buchungssätze einer Finanzbuchhaltung oder z.B. SAP-ISH im HCM-Format) mit den Möglichkeiten meiner Anwendung importiert und die Daten liegen jetzt in der Exportworktabelle umgewandelt für die Ausgabe bereit. Nun könnte es ja sein, dass er für einen ganz speziellen Sonderfall eine eigene Ausgaberoutine programmieren möchte. In diesem Fall könnte ich z.B. sein externes Zusatzprogramm starten, weil der Name seiner Routine in der Hauptanwendung bei "mir" hinterlegt wurde. Den Start könnte ich auslösen, sobald die Exportworktabelle mit aktuellen Daten gefüllt wurde. Bei "mir" wäre dann kein Export eingestellt oder "mein" Export für ein anderes Format könnte auch parallel laufen.

- was gut beim Erklären ist, man kommt der Lösung immer ein Stück näher -

Kann ich so ein externes Programm (Sub oder Function) in einer externen mdb/mde starten und wie, das ist wohl im Moment mein Frage.

LG
Micha

Josef P.
23.01.2008, 12:35
Anhand der letzten Schilderung würde ich über ein AddIn nachdenken.
Begründung: ich nehme an, dass die Ausgaberoutine eigenständig abläuft und somit nicht direkt in deine Anwendung (bis auf den Startaufruf) eingebaut werden muss.

Alternativ zum AddIn (egal ob mda oder COM-AddIn) könnte ich mir standardisierte - aber eigenständige - Zusatzfrontends vorstellen.
Diese startest du aus deiner Anwendung per Access-Automation.

bassmju
23.01.2008, 19:46
Hallo Josef,

sorry, dass ich jetzt erst antworte, ich war unterwegs. Dein Hinweis klingt spannend und ich befasse mich gleich einmal mit dem Thema. Wenn ich noch Fragen habe, würde ich mich gern noch einmal melden.

Vielen Dank und
LG
Micha