Domino 9 und frühere Versionen > Entwicklung

COM Fehler

<< < (4/5) > >>

koehlerbv:
Für mich wird das jetzt doch mehr und mehr zum Krampf. Ich habe hier auf der Test-Kiste absolute Standard-Installationen von Notes und Excel. Mit einem CreateObject habe ich null Probleme - der andere Weg bringt null-komma-nix ("Typen unverträglich" bei session = CreateObject ("Lotus.NotesSession")
Der Verweis auf Notes wurde natürlich vorab eingebunden.

Ansonsten ist ja "mein" Weg über ein Variant nur dadurch unterschiedlich, das die Variable session als Variant und nicht als NotesSession deklariert wurde.

Ich sag's aber nochmal: Ich mag' ja wirklich völlig daneben liegen. Nur: Mein Weg funktioniert, der andere nicht. Was, wenn das dann auch beim Anwender passiert ...

Bernhard (jetzt wirklich sehr gespannt !)

Axel:
Hi,

welchen Verweis hast du den eingebunden? Du musst die Lotus Domino Objects einbinden. Dann sollte es funktionieren. Ich hab damit absolut keine Probleme und hatte auch auf allen Rechnern in unserem Unternehmen keine Probleme. Wenn ein Rechner Terror machte war es in der Regel eine nicht oder unsauber registrierte Bibliothek. Nach einer Neuinstallation war die Sache behoben. Die Probleme hast du aber auch, wenn du über CreateObject gehst.

An sonsten kann ich der Argumentation von Thomas voll zustimmen, von wegen Typsicherheit und Codekomplettierung. Das erspart ne Menge Tipparbeit und -fehler.


Axel


Semeaphoros:
Also, für alle nur Notes-Koehler-Domino-und-so-Entwickler, das ist ja nicht wirklich VBA-Spezifisch.

Man gehe im Designer in irgend ein LotusScript hinein, klicke links, wo die Objekte aufgelistet sind, auf den Reiter "Referenz" und wähle dort die OLE-Klassen aus. Sofern eine COM-Fähige Applikation korrekt installiert ist, taucht sie und die durch sie zur Verfügung gestellten Objekte hier auf. Verantwortlich dafür ist der von der COM-Technologie zur Verfügung gestellte Object-Broker, der mit gängigen Win-Versionen gleich mitkommt.

Der einzige Unterschied zwischen Notes und VBA ist lediglich, dass VBA es darüber hinaus noch erlaubt, diese Objektbibliotheken an- oder wieder abzuwählen, so dass für den Entwickler die Liste nicht soooo ewig lang wird, wie das sonst in den heutigen Installationen normalerweise der Fall ist. Erleichtert die Uebersicht.

Glombi:
Ein Aspekt bzgl. des PATH ist noch offen. Hier der entsprechende Auszug aus der Hilfe (daher meine Bemerkung "ggf."):

The Domino COM objects must be able to locate a valid NOTES.INI file, looking first in the Domino or Notes program directory and then at the PATH system variable. The KeyFileName setting in the NOTES.INI file specifies the user ID that COM uses.

Bzgl. Verwendung von
dim s as Variant
vs
dim s as NotesSession

Variant ist late-binding, NotesSession is early-binding.

Hier die Designer Hilfe dazu:
COM provides both early-binding (custom) and late-binding (dispatch) interfaces. Early binding makes the Domino classes available as typed variables with compile-time checking. Late binding can be used where the language (for example, VBScript) precludes early binding.

Creating a session object
To access the Domino Objects, create an object based on the registered Lotus.NotesSession class.
Visual Basic
Include the Domino object library in the Visual Basic project:
Choose Project - References.
Check "Lotus Domino Objects."
The location will show the path to DOMOBJ.TLB in the Domino or Notes program directory.
Alternatively, you can select the Browse button and specify DOMOBJ.TLB in the Domino or Notes program directory.
The Domino Objects then become available to the project. You can see them in the Object Browser and they appear as prompts when you start typing an object name.
The classes appear in the left-hand pane of the browser; the properties and methods appear in the right-hand pane for the selected class. Constants appear in the left-hand pane as Enum data structures; the members appear in the right-hand pane. For example, the Enum structure named ACLLEVEL contains the members ACLLEVEL_AUTHOR, ACLLEVEL_DEPOSITOR, and so on. The error constants appear in the right-hand pane when NOTES_ERRORS is selected in the left-hand pane.
To access the Domino Objects, create a NotesSession object with either:
Dim session As New NotesSession
Or:
Dim session As NotesSession
Set session = CreateObject("Lotus.NotesSession")
Hinweis  If you declare the session variable as Variant or Object, COM uses late binding.

Ich denke, jetzt sollte alles klar sein.

Andreas

koehlerbv:
Ich bin ja auch sowas von bescheuert  >:(
Wenn man den Verweis zum falschen Produkt einträgt (Lotus Notes Automation Class statt Lotus Domino Objects), dann kann Excel logischerweise nix machen ...

Jetzt funktionieren jedenfalls beide Varianten "as expected and described".

Merci an alle, die mir das Brett vor'm Kopp abgeschraubt haben,

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln