Fehlermeldung beim Automation Server

25. September 2007 16:30

Ich nochmals,

nun etwas völlig anderes. Wir haben eine Funktion in unserem Benachrichtigungssystem, die ein Worddokument erzeugt. Die Funktion funktionierte einwandfrei. Jetzt habe ich einen kleinen Part in der Codeunit auf unserer lokalen Installation geändert und dann auf dem Testsystem eingespielt. Es erscheinte erst die Fehlermeldung

"Die gewählte Typenbibliothek konnte nicht geladen werden".

Daraufhin habe ich die Variable überprüft. Die Variable Document vom Typ Automationserver ist plötzlich leer bzw. dort steht jetzt "Unknow Automation Server". Dann habe ich die Variable nochmals neu angelegt. Wenn ich die Codeunit dann kompaliere erscheint die Fehlermeldung:

"Sie haben eine unbekannte Variable angegeben" PrintOut2000

... in der Zeile Dokument.PrintOut2000();

Sehr seltsam. Sobald ich also etwas an diesem Objekt ändere oder das Objekt durch eine neue importierte Version austausche, erscheinen diese Fehler.

Hat dazu jemand eine Idee?

25. September 2007 16:41

Mir ist da noch etwas aufgefallen. Wenn ich die Liste "Automation Object List" aufrufe, dann steht da als Automation Server u. a. Microsoft Word 9.0 Object Library. In der Spalte daneben steht aber 8.1. Haben wir da eine Falsche Officeversion auf dem Testserver? Aber warum funktioniert das alles, solange ich die CodeUnit nicht anfasse?

25. September 2007 17:03

meines Wissens nach werden die entsprechenden Automationserver "quasi" mit ins Navision Objekt übernommen. So müssen sie auch nur auf dem System wo entwickelt wird zur Verfügung stehen.
Wenn du jetzt alledings am Objekt ändern willst, was aber immer ein neukomplilieren nach sich zieht, hast du genau den Effekt, das sowas nicht mehr funktioniert, weil eben dummerweise ganau diese Version nicht mehr vorhanden ist.
Um sowas aus dem Weg zu gehen, sollte man versuchen (wenn möglich) diese ganzen Automationserver in einer eigenen CU aufzurufen. Der eigentliche Programmablauf (der evtl. öfter mal überarbeutet wird), sollte dann nur noch mit dieser CU kommunizieren.

25. September 2007 18:59

tba hat geschrieben:meines Wissens nach werden die entsprechenden Automationserver "quasi" mit ins Navision Objekt übernommen. [...]

Das kann ich nicht bestätigen.

OCX- und DLL-Dateien müssen überall dort (Workstations, Server, etc.) registriert werden (regsvr32.exe) wo das Objekt genutzt wird.

Gruß, Marc

Re: Fehlermeldung beim Automation Server

26. September 2007 08:26

mgerhartz hat geschrieben:"Die gewählte Typenbibliothek konnte nicht geladen werden".


Diese Fehlermeldung kommt bei mir auch immer mal, wenn er eien OCX nicht ordentlich einbinden konnte.
Hab es dann einfach mehrmals versucht, irgendwann hat es gepasst.

Bei jeder Änderung in einer OCX oder so, muss die Datei dann auch neu in das Navision eingebunden werden.
Das ist zwar manchmal etwas nervend, aber wahrscheinlich unumgänglich.

26. September 2007 08:41

@Marc
ich denke eher das Problem rührt daher, das die entsprechende CU mit einer Wordvariable evtl. Version word2000 kompiliert wurde. dann funzt auch alles. wenn jetzt aber mgerhartz da was ändern möchte, er auf seinem System aber ein Word2003 installiert hat, sind die AutomationVariablen von Word2000 noch eingebunden und deshalb unbekannt.
es gibt jetzt folgende Möglichkeiten:
1. die Änderungen werden auf dem System gemacht, wo noch die alte Wordversion läuft. /einfacher Weg)
oder
2. sämtliche (meist sehr viele) automationVariablen müssen auf die neue Wordversion geändert werden.

26. September 2007 09:35

Da bin ich wieder. Ich habe nun folgendes probiert. Wir und unser Kunde führen den Navision Client per Citrix auf einem Terminalserver aus. Auf diesem Terminalservern ist auch das Office in der Entsprechenden Version (9.x) installliert. Öffne ich die CodeUnit und schaue mir die Variablen an, werden die Automationserver richtig erkannt. Kompiliere ich jetzt diese Codeunit, auch ohne eine Änderung durchgeführt zu haben, so erscheint die Fehlermeldung:

Sie haben eine unbekannte Variable angegeben" PrintOut2000

... in der Zeile Dokument.PrintOut2000();

Der Fehler tritt also immer beim kompilieren auf. Ich habe mich auch direkt auf einem der Terminalserver - ohne Citrix - angemeldet und das gleiche ausprobiert. Keine Änderung! Bin ein wenig ratlos. In einem anderen Thread wurde mir schon einmal geraten unter EXTRAS/CUSTOM CONTROLS diese neu zu registrieren. Microsoft Word wird hier nicht angeboten. Bedeutet das, dass das Control bereits registriert ist?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

26. September 2007 09:40

was ist denn eigentlich Dokument für ein Variablentyp?

26. September 2007 10:45

Hier der Typ der Variable Dokument:

'Microsoft Word 9.0 Object Library'.Document

26. September 2007 10:59

ich hab leider nur ein Microsoft Word 11.0 Object Library Version 8.3 da.
Da gibt es eine Klasse Document mit der Methode "Printout" aber keine "printout2000" ???

26. September 2007 16:35

Ich habe jetzt mal die Bezeichungen geändert und das "2000" auskommentiert und die Zeile entsprechend ersetzt. Bis jetzt scheint es zu funktionieren. Allerdings muss ich da noch ein paar Test durchführen. Trotzdem interessiert es mich, warum es bis jetzt keine Probleme gab und diese erst beim Kompilieren aufgetreten sind.

Sollte es damit endlich erledigt sein, bedanke ich mich schon einmal im vorraus bei allen. Insbesondere bei Thomas :-)

Gruß

Markus