[Gelöst] Unbekannter Automation Server

12. März 2012 13:00

Hallo zusammen,
Ich habe ein Problem mit den Automation Servern in einigen CodeUnits. Und zwar werden bei mir die Codeunits 424, 5054, 5064, 7152, 8610, 8611, 5055267 nicht kompliert mit der Fehlermeldung: "Could not load the selected type library". Bei einigen davon liegt es wohl daran, dass auf dem Server kein Office installiert ist, aber einige sind z.B. für die Anwendung von Vorlagen verantwortlich, was ohne die kompilierte Codeunit nicht funktioniert.
Zu der Datenbank: Es handelt sich um eine Kundendatenbank auf der die Version 6.0 installiert war. Ich habe das NAV deinstalliert und die R2 installiert. Außerdem hab ich den aktuellsten Hotfix eingespielt. Damit habe ich die Datenbank geöffnet und entsprechend konvertiert. Dann hab ich aus einer anderen NAV-R2 Datenbank alle Objekte exportiert und in die Kundendatenbank importiert. Somit ist da nun die Version 6.0 R2 (6.00.32982). Wenn ich nun versuche alle Objekte zu kompilieren, kommt der oben genannte Fehler.
Nun bin ich mal in die Codeunit 8611 gegangen und habe mit die unbekannten Automations angekuckt. In einer funktionierenden R2 Version hat die globale Variable XlApp vom Typ Automation den Subtype "Unknown Automation Server.Application". Siehe Anhang Bild1. Wenn ich in die Automation Object Liste des "Unknown Automation Server" 's gehe sehe ich da auch alle die benötigten Klassen. Siehe Bild2. Jedoch ist der Name des Automation Servers ein bisschen seltsam. Wenn ich dann nochmal in die "Automation Server List" gehe, sieht man, dass der dort angegebene Automation Server keinen Namen hat. Siehe Bild3. Die Bilder sind alle in unserer internen DB gemacht worden, wo von Anfang an die R2 Verson installiert wurde. Bei dem Kundensystem hat die obene gennante Variable den Subtype "Unknown Automation Server.Unknown Class", was wohl auch zu dem Kompiliertfehler führt.
Lange Rede kurzer Sinn. Meine eigentliche Frage ist jetzt wie ich es schaffe diese fehlende .dll-Datei nachträglich zu registrieren, wenn ich nicht einmal weiß wie sie heißt.
Ich hoffe meine Frage ist mehr oder weniger verständlich. :roll:
Danke schonmal im Voraus.
Zuletzt geändert von Kostja am 13. März 2012 16:34, insgesamt 1-mal geändert.

Re: Unbekannter Automation Server

12. März 2012 15:17

Kompiliere von einem Rechner aus, auf dem Excel (am besten noch in der richtigen Version) installiert ist. Dann sollte es eigentlich gehen.
Wenn du den Subtype-AssistEdit verwendest, kommst du auf die GUID des Automation Servers. Nach der kann man in der Registry auf einem entsprechenden Rechner suchen, um mehr Information dazu zu bekommen. Oder man macht eine neue Form auf die Tabelle "Automation Server", hier sind in der Regel auch die nötigen Informationen vorhanden.
Nicht aufgelöste Automation Server sind normalerweise kein Problem, solange die Funktion nicht von dem jeweiligen Rechner aus verwendet werden sollen.

Re: Unbekannter Automation Server

13. März 2012 11:46

HattrickHorst hat geschrieben:... Oder man macht eine neue Form auf die Tabelle "Automation Server", hier sind in der Regel auch die nötigen Informationen vorhanden...


Hi,

wo gibt es denn diese Tabelle? Ist mir bis jetzt nicht untergekommen.

Volker

Re: Unbekannter Automation Server

13. März 2012 11:48

wo gibt es denn diese Tabelle? Ist mir bis jetzt nicht untergekommen.


genauso wei HattrikHorst es beschrieben hat. Man mach eine Form auf diese Tabelle.

Gruß, Fiddi

Re: Unbekannter Automation Server

13. März 2012 12:11

Hi Fiddi,

ist schon klar, aber ich habe diese weder im Objekt-Designer noch im SQL-Server weder als Tabell noch als Sicht gefunden, oder ich bin blind. Daher die Frage wo diese Tabelle herkommt. war vielleicht mißverständlich formuliert.

Volker

Re: Unbekannter Automation Server

13. März 2012 12:19

Das ist genau so eine Tabelle wie Integer oder Date. Leg dir doch mal im Form-Designer eine Übersichtsform auf die Tabelle 2000000029 "System Object" an, dann siehst du alle, die es gibt.

Re: Unbekannter Automation Server

13. März 2012 12:25

ist schon klar, aber ich habe diese weder im Objekt-Designer noch im SQL-Server weder als Tabell noch als Sicht gefunden, oder ich bin blind. Daher die Frage wo diese Tabelle herkommt. war vielleicht mißverständlich formuliert.


wenn du aber eine neue Form anlegst, und diese Tabelle angibst/auswählst siehst du sie auch (und auch noch einige andere).

Gruß, Fiddi

Re: Unbekannter Automation Server

13. März 2012 14:23

Das sind virtuelle Systemtabellen. Sie sind da, aber nicht im Object-Designer/SQL Server.

Re: Unbekannter Automation Server

13. März 2012 14:31

Alternativ noch als Tipp (bzw. konkret ausformuliert): :idea:

Du kannst um auf die ID der virtuellen Tabellen zu kommen auch einfach mal kurzzeitig eine RECORD-Variable anlegen und dann bei Subtype in der Liste schauen welche ID diese hat. Dort stehen nämlich alle.

Wenn du den Inhalt der virtuellen Tabelle sehen willst, dann erzeugst du im Objektdesigner scheinbar eine neue Form (Tabular-Type Form) wählst deine virtuelle Tabelle (in der Regel eine Tabelle ganz am Ende. In deinem Fall Tabelle 2000000046 "Automation Server") aus übernimmst alle Felder und gehst dann auf Preview.

Gruß,
winfy

Re: Unbekannter Automation Server

13. März 2012 16:34

HattrickHorst hat geschrieben:Kompiliere von einem Rechner aus, auf dem Excel (am besten noch in der richtigen Version) installiert ist. Dann sollte es eigentlich gehen.
Wenn du den Subtype-AssistEdit verwendest, kommst du auf die GUID des Automation Servers. Nach der kann man in der Registry auf einem entsprechenden Rechner suchen, um mehr Information dazu zu bekommen. Oder man macht eine neue Form auf die Tabelle "Automation Server", hier sind in der Regel auch die nötigen Informationen vorhanden.
Nicht aufgelöste Automation Server sind normalerweise kein Problem, solange die Funktion nicht von dem jeweiligen Rechner aus verwendet werden sollen.

Sehr gut. Durch die Form konnte ich herausfinden, dass der fehlende Automation Server die Excel.exe ist. Das heißt eine einfache Installation eines Office hat gereicht um alle Objekte zu kompilieren. Mich wunders jetzt nur, dass man ohne Office nicht alle Objekte kompilieren kann und somit auch nicht alle NAV-Funktionen nutzen kann. Obwohls auch Funktionen sind, die nichts mit Office zu tun haben (Vorlage anwenden).
Naja wie dem auch sei, vielen Dank für deine Antowort. Hat mir sehr weitergeholfen und ich habe wieder was dazugelernt :-)

Re: [Gelöst] Unbekannter Automation Server

13. März 2012 20:22

Das habe ich ja schon am Anfang gesagt...
HattrickHorst hat geschrieben:Kompiliere von einem Rechner aus, auf dem Excel (am besten noch in der richtigen Version) installiert ist. Dann sollte es eigentlich gehen.

Ist vielleicht etwas missverständlich ausgedrückt. Willst du wirklich alle Objekt kompilieren, sind an der ein oder anderen Stelle bestimmte Autmation Server erforderlich. D.h. eigentlich nur, der nötige COM-Server/Assembly muß ordentlich registriert sein. Das kann auch z.B. mal eine Komponente des Commerce Gateway sein oder auch wie in deinem Fall Office/Excel. Kommt halt auf die installierten Module (Objekte) innerhalb von NAV an.

Für die Ausführung ist das dann aber wieder vollkommen zweirangig. Solange nicht genau diese fehlenden Automation Server benutzt werden, können auch Funktionen des jeweiligen Objekts genutzt werden. D.h. also, wenn ich eine kompilierte Codeunit habe, die etwas nach Excel exportiert, dann kann ich die Funktion nicht verwenden, wenn Excel nicht ordentlich installiert ist. Es kommt zu einem Laufzeitfehler¹. Wenn aber in der gleichen Codeunit noch eine Funktion ist, die mir ein Buch.-Blatt füllt (rein mit NAVinternen Mitteln), dann funktioniert das einwandfrei.

Der Benutzer bekommt sozusagen gar nichts davon mit, wenn die entsprechenden Funktionen gar nicht genutzt werden. Deshalb ist das Kompilieren aller Objekte oftmals nur für Kontrollzwecke sinnvoll², aber in der Praxis braucht man eigentlich nur die Objekte kompilieren, die auch definitiv zur Anwendung kommen.

1) [Oftmals sind die Office-Produkte aber ein Sonderfall, weil bei unterschiedlichen Versionen davon auch "Unknown Automation Server" angezeigt werden kann, obwohl die Funktion trotzdem läuft. Aber ich denke, das Prinzip wird klar.]
2) [Oder man hat die Objekte im Textformat importiert, wovon ich aber besonders im Fall von Objekten mit Automation Server abraten würde. Gerade solche Objekte sollten einem intensiven Test im Zielsystem unterzogen werden, sprich der Anwendungsfall muß mehrfach und in unterschiedlichen Konstellationen durchgespielt werden. Dann fallen fehlende oder falsche Installationen spätestens auf.]

Re: [Gelöst] Unbekannter Automation Server

14. März 2012 11:46

HattrickHorst hat geschrieben:Das habe ich ja schon am Anfang gesagt...

Ja, hast du. Hatte aber gedacht, dass es da noch andere Automation Server gibt, die nicht registriert sind.
Ich habe ja schon verstanden, dass lediglich für das Kompilieren der Codeunits ein Office gebraucht wird und die nicht officebezogenenn Funktionen nach dem Kompilieren auch ohne ein Office funktionieren. Nur ich habe mir angewöhnt z.B. nach dem Importieren einer Datenbanksicherung alle Objekte zu kompilieren um wirklich auf der sicheren Seite zu sein. Wie du schon sagtest "für Kontrollzwecke". Da ist es natürlich doof, wenn man grad kein Office zur Hand. Naja wenigstens weiß ich jetzt, worauf ich beim Kompilieren zu achten habe.
Vielen Dank nochmal für deine wirklich umfassende Antwort und Erläuterung.