SetupModul Implements ISetup

Diskussionen über den Quellcode (Module, Klassenstruktur, Schnittstellen u.s.w.) der Access Code Library

SetupModul Implements ISetup

Beitragvon Sten Schmidt » Fr 22. Jun 2012, 09:43

Hallo Zusammen,

es geht um den Feature Request #29, d.h. Erforderliche Tabellen bereits während des Imports mit dem ImportWizard zu erstellen.

Ich würde die Problemstellung an dieser Stelle gerne noch etwas mehr verallgemeinern und das Thema "Setup-Module" oder "Setup-Routinen" nennen.

Mir gefällt dass Josef's erster Ansatz eigentlich am besten:

Josef hat geschrieben:Lösungsansätze:
1.) wie bei den erforderlichen Verweisen in Codelib-Block ein Tag unterbringen, das auf ein Code-Modul (z. B. Klasse mit definierter Schnittstelle) verweist, über welches die Tabelle erzeugt wird. Dafür müsste das Code-Modul in die Anwendung kopiert und ausgeführt werden.


Was ich mir übergelgt habe ist die Setup-Routine am Ende des Imports mittels des <execute>-Tags auszuführen, Beispiel:

Code: Alles auswählen

'<codelib>
'  ...
'  <execute>SetupUSysRegInfo()</execute>
'  <execute>SetupProjectProperties()</execute>
'  ...
'</codelib>


<execute> wird einfach nur an Eval() weitergereicht, es müsste also auch möglich sein Methoden aufzurufen die (entweder Boolean oder Int/Long als Return-Value haben und) in einer "Statischen" Klasse (mit Attribute VB_PredeclaredId = True) definiert sind.

Prinzipiell könnte man die Setup-Routinen auch als Modul ausführen, wenn dann im <execute>-Tag der vollqualifizierte Name verwendet wird (da sonst Compiler-Fehler auftreten wenn man mehrere SetupModule gleichzeitig importieren will).


Fragen:

  • Klasse / statische Klasse / Modul ... was wollen wir nehmen?
  • Kann in VBA ein Modul auch eine Schnittstelle implementieren?
  • Wie sollte eine solche Schnittstelle eurer Meinung nach aussehen? (do's and don'ts)
  • Sollte es lieber eine allgemeine Schnittstelle "ISetup" geben oder lieber mehrere spezielle wie z.B. "ISetupTable", "ISetupProperties", ...?
  • Es wäre denkbar, das SetupModul nach dem Import wieder automatisch zu entfernen, was haltet Ihr davon?


Gruß Sten

Update

Das geht wohl doch nicht so einfach... der einzige Fall der im Test bereits funktioniert ist:

Code: Alles auswählen

Public Function SubTest()

    MsgBox "It Works"

End Function
 


und dann

Code: Alles auswählen

?eval("SubTest()")
 


Selbst der Aufruf ?eval("Modulname.SubTest()") funktioniert schon nicht mehr.
Ebenso wenn es eine Public Sub anstatt Public Function sein soll.

Kennt jemand noch einen anderen Weg?

/Update
Zuletzt geändert von Sten Schmidt am Fr 22. Jun 2012, 12:37, insgesamt 1-mal geändert.
Sten Schmidt
Entwickler
 
Beiträge: 139
Registriert: Do 18. Mär 2010, 22:24
Accessversion: 2007, 2010
Access-Erfahrung: Experte

Re: SetupModul Implements ISetup

Beitragvon Josef Pötzl » Fr 22. Jun 2012, 11:53

Hallo!

Eine public Prozedur in einem Standardmodul lässt sich am einfachsten aufrufen.
Eine Schnittstelle ist meiner Ansicht nach nicht erforderlich, da man die Prozedur im codelib-Block angeben kann.

Es wäre denkbar, das SetupModul nach dem Import wieder automatisch zu entfernen, was haltet Ihr davon?

Das ist meiner Meinung nach sinnvoll, da dieser Code-Aufruf nur einmal benötigt wird.

mfg
Josef
Josef Pötzl
Moderator
 
Beiträge: 757
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2010 (2013)


Zurück zu Quellcode

cron