Seite 3 von 6

Re: OptionValueManager

BeitragVerfasst: So 24. Mai 2015, 21:21
von Josef Pötzl
Hallo!

Der OptionManager ist doch das Codemodul, das in einer fertigen Anwendung laufen soll, oder?
Warum soll man zu dieser Zeit die Enum-Einträge anpassen?

Vorschlag: diese Funktionalität in eine Public-Methode des OptionManager auslagern und aus der Init-Prozedur entfernen.
Dann kann das ein Anwendungsentwickler bei Bedarf ausführen und es wird nicht unnötigerweise beim Enduser geprüft.

LG
Josef

Re: OptionValueManager

BeitragVerfasst: So 24. Mai 2015, 21:25
von Andreas Vogt
Hallo,
ja schon, aber zum Zeitpunkt des import entsteht eine leere Tabelle und ein Enum mit Dummy-Eintrag damit der Compiler nicht mozt.
Wann denn sollte der Enum aufgebaut werden? der User gibt doch erst zur Laufzeit seine Optionen ein.

Aber mit einer Auslagerung in öffentliche Methode kann ich leben, ist wahrscheinlich die bessere Variante.

Andreas

Re: OptionValueManager

BeitragVerfasst: So 24. Mai 2015, 21:43
von Josef Pötzl
Wie ich schon einmal schrieb:
Wir müssen bei "User" zw. 2 Arten unterscheiden. Der User, der die Enums verwendet, wird die Optionen nicht zur Laufzeit eingeben, da zur Laufzeit die Code vielleicht schon in einer mde/accde läuft.

LG
Josef

Re: OptionValueManager

BeitragVerfasst: So 24. Mai 2015, 21:57
von Andreas Vogt
Also,
habe noch Kleinigkeiten geändert.
Habe die Klasse ohne Setup importiert.
Setup-Modul erstellt mit Code aus dem Repository.
Dann bei jeder einzelnen der 4 Execute-Prozeduren hintereinander in der richtigen Reihenfolge Cursor auf die Prozedur gesetzt und F5 gedrückt.
Tabelle und Modul wird erstellt, Code eingetragen und Setup gelöscht.

Wenn ich aber nun die Setup-Datei importiere, stürzt Access ab. Im Backup sehe ich dass Tabelle und Modul erstellt wurden, aber kein Code eingetragen wurde.
Auch die Setup ist noch vorhanden.

Wenn ich in der Prozedur OptionManagerSetup_CreateHelperModule das On Error Resume Next rausnehme bekomm ich den Fehler beim lokalen ausführen:
Fehler 29068: MS Access kan diesen Vorgang nicht abschließen. Halten Sie die Ausführung des Code an und versuchen Sie es erneut.
Der Fehlerort ist diese Zeile: DoCmd.Save acModule, m_HelperModuleName

Das gleiche in der Prozedur OptionManagerSetup_CreateEnum in der gleichen Fehlerzeile.

Hast du eine Idee wie man das lösen könnte?
Andreas

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 09:20
von Josef Pötzl
Ich stellte die Prozeduren im Setup-Modul nicht umsonst auf Public um. ;-)

Außerdem wird
Code: Alles auswählen
    With Application.VBE.ActiveVBProject.VBComponents
        .Add vbext_ct_StdModule
        .Name = m_HelperModuleName
    End With
 

nicht funktionieren aber auch das hatte ich in einer vorherigen Version schon korrigiert.

LG
Josef

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 09:29
von Andreas Vogt
Hallo,
Ja sorry, war gestern noch lange am Arbeiten daran, da hab ich das wahrscheinlich übersehen.
So siehts jetzt aus:
Code: Alles auswählen
    With Application.VBE.ActiveVBProject.VBComponents
        .Add (vbext_ct_StdModule)
        .Item(.Count).Name = m_HelperModuleName
    End With


Gruß Andreas

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 09:45
von Josef Pötzl
Hab meine Korrekturen nun eingecheckt.

Code: Alles auswählen
    With Application.VBE.ActiveVBProject.VBComponents
        With .Add(vbext_ct_StdModule)
           .Name = m_HelperModuleName
        End With
    End With
 

With kann man verschachteln, dann muss man keine Angst beim Zählen haben. ;-)

Zur Tabelle:
der ID-Pk bringt meiner Meinung nach nichts. Wäre es nicht sinnvoller das Key-Feld als PK zu verwenden, dann läuft ein DLookup über den Index.

LG
Josef

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 09:59
von Andreas Vogt
Hallo,
der Import funktioniert jetzt. Habe noch beim Erstellen des Moduls DoCmd.Close acModule m_OptionManagerHelper eingefügt, und beim Enum erstellen DoCmd.close acModule m_OptionManagerHelper, acSaveYes

Aber keine der eingefügten Module wird gespeichert oder ist sichtbar, erst wenn ich die Datenbank schließe kommt der Dialog dass diese zu speichern sind.
Soll man das so lassen?

Ich meine den ID_PK hab ich schon entfernt? Wenn nicht hol ich das noch nach.
Andreas

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 17:45
von Josef Pötzl
Hallo!

Hab noch <code>DoCmd.RunCommand acCmdCompileAndSaveAllModules</code> im Setup-Modul angefügt.
Jetzt sollten die Codemodule sofort sichtbar sein.

LG
Josef

Re: OptionValueManager

BeitragVerfasst: Mo 25. Mai 2015, 17:56
von Andreas Vogt
Hallo,
habs grad gesehen :-)
Ich war außerdem auch grad im Code vom Import-Addin unterwegs, und da hab ich das auch eben gefunden :-)
Ich hätte aber acCmdSaveAllModules genommen, man kann ja nicht sicher sein dass der restliche Code der Access Anwendung korrekt ist?
Würde dann das Speichern abbrechen wenn die Anwendung nicht kompellierbar ist?

Außerdem hab ich noch ne Frage. Warum hast du in das Klassenmodul die DAO-Referenz eingefügt?
Bedeutet das dass bei dem Import im AccessProjekt ein Verweiss gesetzt wird wenn nicht vorhanden?

Gruß Andreas

Edit: habs grad ausprobiert, wenn die Anwendung nicht kompellierbar ist werden die Module nicht gespeichert.
Also muss acCmdSaveAllModules statt dessen hinein.

Sch...
gibt Fehler 2046: Befehlt AlleModuleSpeichern ist derzeit nicht verfügbar.
Any Ideas?