PDA

Vollständige Version anzeigen : Funktionsausruf für Profis


DirkT
29.08.2001, 11:59
Hallo,
ich suche eine Möglichkeit z.B. bei dem Befehl
CALL Modul1.Sub1
entweder Modul1 oder Sub1 als Variable anzugeben. Leider kenne ich keine Möglichkeit dies zu realisieren.
Da mir die Variableninhalte nicht unbedingt bekannt sind scheidet eine SELECT-CASE leider auch aus...
Weiß da jemand eine Möglichkeit???
Danke

Günni
29.08.2001, 17:20
Auch wenn Du eine Frage 10 mal stellst, heißt dass nicht, dass Du 10 mal soviele Antworten bekommst.

DirkT
29.08.2001, 20:13
Eine wäre mir eigentlich schon genug... :-)

Phillip-Berlin
29.08.2001, 20:16
also ich habe dir noch nicht geantwortet weil ich die frage garnicht verstehe ...
kannst du das evtl. noch anders/genauer erklären?

Sascha Trowitzsch
29.08.2001, 20:27
Hi Dirk,

nach allem, was ich weiß, ist das nicht möglich. VBA-Prozeduren können nicht indirekt aufgerufen werden.

Vielleicht ließe sich irgendwas mit dem AddressOf-Operator (nur Acc200x ) und API-Aufrufen basteln, also direkt in die Prozedur-Einsprungsadressen rein, aber es dürfte Insiderwissen erfordern.
Das ist ein Fall für Mike Kaplan und trigeminal.com.

Ciao, Sascha

EricB
29.08.2001, 21:53
Hallo!

Also mir ist grundsätzlich neu, dass mn ein Programm erstellen kann, ohne zu wissen, welche Funktion zu welchem Zeitpunkt aufgerufen werden muss!

Falls das wirklich gehen soll, kannst du den Namen einer Funktion in eine Variable einlesen und die Funtion dann mit EVAL aufrufen. (Mehr in der Online-Hilfe).

Den Modulnamen als Variable glaube ich nicht dass du einlesen kannst. Aber die Funktionsnamen sollten innerhalb der Anwendung eindeutig sein. Dann ist die Angabde des Modulnames gar nichr erforderlich!

Ciao
Eric

DirkT
29.08.2001, 23:07
Hallo EricB,

Dein Tip mit EVAL war einfach SUPER!!! Tausend Dank

Nur aber nochmal zum Detail:
es geht im Prinzip darum einfach eine Modul im Nachhinein zu importieren und zusätzlich den Namen in einer Tabelle als Datensatz einzutragen
Dadurch lassen sich zusätzlichen Funktionen einfach "nachrüsten" ohne die bestehende Datenbank verändern zu müssen.
Das ist zumindest das Ziel...

Du hast natürlich Recht das eindeutige Funktionsnamen einfacher zu Hand haben sind.
Mal angenommen ich füge ein neues Modul "Neu1" hinzu und weiß das dessen Funktionname "Start_Modul_Neu1" (habe ich in Varible zu Verfügung) heißt.
Kann ich mit (DEINER GROßARTIGEN IDEE) Eval(Var) die Funktion ausführen. Auch ohne das diese Funktion einen Rückgabewert hat.

Noch eine weitere Frage hätte ich noch: Läßt sich dies auch mit einer Sub realisieren? Mit Eval geht dies nämlich nicht.
Ansonsten muß ich halte alle vorhanden Subs in Functions ändern, aber immerhin weiß ich jetzt wie es machbar ist.

Danke Dirk