OptionValueManager

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

Re: OptionValueManager

Beitragvon Josef Pötzl » So 24. Mai 2015, 21:21

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
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: OptionValueManager

Beitragvon Andreas Vogt » So 24. Mai 2015, 21:25

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
Andreas Vogt
Entwickler
 
Beiträge: 165
Registriert: Do 18. Mär 2010, 18:00
Wohnort: Offenburg
Accessversion: 2.0, 97, 2002, 2003, 2007, 2010
Access-Erfahrung: Fortgeschritten

Re: OptionValueManager

Beitragvon Josef Pötzl » So 24. Mai 2015, 21:43

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
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: OptionValueManager

Beitragvon Andreas Vogt » So 24. Mai 2015, 21:57

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
Zuletzt geändert von Andreas Vogt am Mo 25. Mai 2015, 09:27, insgesamt 1-mal geändert.
Andreas Vogt
Entwickler
 
Beiträge: 165
Registriert: Do 18. Mär 2010, 18:00
Wohnort: Offenburg
Accessversion: 2.0, 97, 2002, 2003, 2007, 2010
Access-Erfahrung: Fortgeschritten

Re: OptionValueManager

Beitragvon Josef Pötzl » Mo 25. Mai 2015, 09:20

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
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: OptionValueManager

Beitragvon Andreas Vogt » Mo 25. Mai 2015, 09:29

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
Andreas Vogt
Entwickler
 
Beiträge: 165
Registriert: Do 18. Mär 2010, 18:00
Wohnort: Offenburg
Accessversion: 2.0, 97, 2002, 2003, 2007, 2010
Access-Erfahrung: Fortgeschritten

Re: OptionValueManager

Beitragvon Josef Pötzl » Mo 25. Mai 2015, 09:45

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
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: OptionValueManager

Beitragvon Andreas Vogt » Mo 25. Mai 2015, 09:59

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
Andreas Vogt
Entwickler
 
Beiträge: 165
Registriert: Do 18. Mär 2010, 18:00
Wohnort: Offenburg
Accessversion: 2.0, 97, 2002, 2003, 2007, 2010
Access-Erfahrung: Fortgeschritten

Re: OptionValueManager

Beitragvon Josef Pötzl » Mo 25. Mai 2015, 17:45

Hallo!

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

LG
Josef
Josef Pötzl
Moderator
 
Beiträge: 805
Registriert: Mo 30. Nov 2009, 10:08
Wohnort: Klagenfurt
Accessversion: 2016

Re: OptionValueManager

Beitragvon Andreas Vogt » Mo 25. Mai 2015, 17:56

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?
Andreas Vogt
Entwickler
 
Beiträge: 165
Registriert: Do 18. Mär 2010, 18:00
Wohnort: Offenburg
Accessversion: 2.0, 97, 2002, 2003, 2007, 2010
Access-Erfahrung: Fortgeschritten

VorherigeNächste

Zurück zu Quellcode

cron