Access 2007 Automation von NAV

7. Dezember 2008 16:42

Hallo,

ich möchte Access 2007 von NAV öffnen um die public Function "function03" oder die public Sub "Sub07" des Moduls "module05" aufzurufen. Mit dem Rückgabewert möchte ich NAV über eine case-Anweisung anweisen, etwas zu tun.

Was ich bisher versucht habe ...
Google, Mibuso, MSDynamics ... nix für mich funktionierendes gefunden.

Ich habe nicht mal eine Doku zur "Microsoft Access 12.0 Object Library" gefunden. Oh man ...

Was ich bis jetzt in NAV gemacht habe

C/AL Globals
Name DataType Subtype Length
Code:
AccessApp   Automation   'Microsoft Access 12.0 Object Library'.Application


NAV Code

Code:
IF ISCLEAR(AccessApp) THEN CREATE(AccessApp);

// MsoAutomationSecurityForceDisable = 3
// MsoAutomationSecurityByUI = 2
// MsoAutomationSecurityLow = 1
AccessApp.AutomationSecurity := 3;

AccessApp.OpenCurrentDatabase('U:\temp\aa_aaaaa.accdb',FALSE,'');
AccessApp.Visible(TRUE);

Access 2007 wird gestartet ... das ist schonmal positiv :-)

Jetzt möchte ich eine Funktion oder Procedure starten
Irgendwo habe ich von jemandem einen Beitrag (Nachtrag : Aus Navision ein Access-Modul starten) gelesen, der folgendes versucht hat

Code:
bool := AccessApp.Run('function03');

Woher weiß Access denn nun, in welchem Modul die Funktion steckt ?

Selbst wenn ich folgendes versuche ...

Code:
bool := AccessApp.Run('module05.function03');

oder
Code:
AccessApp.Run('module05.Sub07');

oder
Code:
AccessApp.Run('Sub07');

oder
Code:
AccessApp.Run('aaa_aaaaa.module05.Sub07');

oder
Code:
AccessApp.Run('aaa_aaaaa.Sub07');


NAV gib eine Fehlermeldung zurück, die aussagt, dass die Procedure nicht gefunden werden kann "Procedure could not be found"

Was ich gerne erreichen möchte ...

# Acccess 2007 öffnen
funktioniert mit ...
Code:
AccessApp.OpenCurrentDatabase('U:\temp\aa_aaaaa.accdb',FALSE,'');
AccessApp.Visible(TRUE);



# public function03 oder public sub07 aus module05 aufrufen
Im Moment habe ich keinen Erfolg

# Rückgabewert von function03 aus module05 oder sub07 starten
Im Moment habe ich keinen Erfolg

# Access 2007 schliessen
funktioniert mit ...
Code:
AccessApp.Quit



# Entscheiden, was in NAV mit dem Rückgabewert angestellt werden soll
(case : kein problem ;-) )


Ich habe auch mit weiteren Automation Servern, z.B. 'Microsoft Access 12.0 Object Library'.AccessObject. experimentieren wollen.

Dazu habe ich eine Instanz erzeugt ...

Name DataType Subtype Length
Code:
AccessObject   Automation   'Microsoft Access 12.0 Object Library'.AccessObject   

CREATE(AccessObject);


Es wird allerdings ein Fehler erzeugt
Für das OLE Control oder den Automationserver GUID bla bla bla konte keine Instanz erzeugt werden.
Prüfen Sie, ob das OLE Control oder der Automation Server korrekt installiert und registriert wurde.

Puhhhhh
Ich habe nach stundenlangem Recherchieren keine Idee mehr .... Ich hoffe, mir kann hier jemand helfen


Vielen Dank
Zuletzt geändert von carstenPaul am 8. Dezember 2008 05:56, insgesamt 1-mal geändert.

Re: Access 2007 Automation von NAV

7. Dezember 2008 17:50

Ich glaub das konnte Dir helfen: http://msdn.microsoft.com/en-us/library/bb214047.aspx Dort findest Du auch die vermißte Doku.

Re: Access 2007 Automation von NAV

7. Dezember 2008 21:19

Hallo vsnase,
vielen Dank für die Info.

Das habe ich schon ausprobiert. Hier mal die Funktionen parallel für NAV

VB :
Code:
Dim appAccess As Access.Application

NAV :
Code:
AccessApp Automation 'Microsoft Access 12.0 Object Library'.Application


' Create instance of Access Application object.
VB :
Code:
Set appAccess = CreateObject("Access.Application")

NAV :
Code:
CREATE(AppAccess)


' Open WizCode database in Microsoft Access window.
VB :
Code:
appAccess.OpenCurrentDatabase "C:\My Documents\WizCode.mdb", False

NAV :
Code:
AccessApp.OpenCurrentDatabase('U:\temp\aa_aaaaa.accdb',FALSE,'');


VB :
Code:
' Run Sub procedure.
appAccess.Run "Greeting", "Joe"
Und hierum geht es genau in meiner Anfrage. Das klappt nicht, weil ich eine bestimmte Funktion oder Procedur aus einem bestimmten Modul aufrufen möchte, was so nicht funktioniert...

folgendes hat mich nicht zum Erfolg gebracht ...
Code:
bool := AccessApp.Run('module05.function03');

oder
Code:
AccessApp.Run('module05.Sub07');

oder
Code:
AccessApp.Run('Sub07');

oder
Code:
AccessApp.Run('aaa_aaaaa.module05.Sub07');

oder
Code:
AccessApp.Run('aaa_aaaaa.Sub07');



Die Frage : "Wie rufe ich FunktionX aus ModulY auf, denn es könnte eine gleichnamige FunktionX in ModulZ vorhanden sein"
NAV :
Code:
AppAccess.Run('?????????');


VB :
Code:
Set appAccess = Nothing

NAV :
Code:
CLEAR(AppAccess)



Grüße, Carsten
Zuletzt geändert von carstenPaul am 8. Dezember 2008 06:11, insgesamt 2-mal geändert.

Re: Access 2007 Automation von NAV

8. Dezember 2008 05:58

Natalie hat geschrieben: ... Daher bitten wir dich, vor und nach deinem Quelltext diese Code-Tags einzufügen ...


Hallo Natalie,
Danke für den Hinweis. Besser so ?
Grüße, Carsten

Re: Access 2007 Automation von NAV

8. Dezember 2008 06:36

Ich habe diesen Beitrag im falschen Forum gepostet ... Sorry ... :oops:
Hier ist der Beitrag jetzt drin : ‹ Microsoft Dynamics ‹ Software-Integration ‹ Microsoft Office
Link : http://www.msdynamics.de/viewtopic.php?f=33&t=6473&p=29963#p29963

Grüße, Carsten

Re: Access 2007 Automation von NAV

8. Dezember 2008 08:17

[Beitrag aus dem Forum NAV 5.xx nach Microsoft Office verschoben.]

Gruß, Timo Lässer
MSDynamics.de-Team

Re: Access 2007 Automation von NAV

11. Dezember 2008 15:28

Ich werde jetz mal Experimente mit Dot Net 3.5 machen. Vielleicht klappt es dann ...

Re: Access 2007 Automation von NAV

11. Dezember 2008 16:00

Auch nach der Installation von Dot Net 3.5 bekomme ich die folgende Meldung ...

message_de.jpg


Kann mir jemand helfen ?

Grüße, Carsten
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Access 2007 Automation von NAV

14. Dezember 2008 09:51

Ich bin am Verzweifeln.

folgende Schritte habe ich noch unternommen ...

* Deinstallation von Office 2007 als Admin ohne ADS
* Reparatur von Dot Net 3.5 (es befinden sich auch 1.1, 2 und 3 auf dem Rechner)
* Installation von Office 2007 als Admin ohne ADS


Ich kann immer nur

'Microsoft Access 12.0 Object Library'.Application

instanziieren. Die anderen, wie z.B.
'Microsoft Access 12.0 Object Library'.AccessObject

kommen immer wieder mit der Fehlermeldung
message_de.jpg


Folgendes hat auch keinen Erfolg gebracht, ...
Ich habe mir die DLL "Microsoft.Office.Interop.Access.dll", gacutil und regasm von einem Rechner mit Visual Studio 2008 gezogen und folgendes ausprobiert

c:\access\gacutil /f /i Microsoft.Office.Interop.Access.dll
c:\access\regasm Microsoft.Office.Interop.Access.dll

Die Meldung


C:\access>c:\access\gacutil /f /i Microsoft.Office.Interop.Access.dll

Microsoft (R) .NET Global Assembly Cache Utility. Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Assembly successfully added to the cache

C:\access>c:\access\regasm Microsoft.Office.Interop.Access.dll
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.1433
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved.

Types registered successfully

C:\access>pause
Drücken Sie eine beliebige Taste . . .

Nach der Registrierung habe ich eine neue Codeunit erstellt,
und versucht "'Microsoft Access 12.0 Object Library'.AccessObject" zu instanziieren ...

Name DataType Subtype Length
aaaa Automation 'Microsoft Access 12.0 Object Library'.AccessObject

OnRun()
CREATE(aaaa);

Gleiche Fehlermeldung

message_de.jpg


:-?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Access 2007 Automation von NAV

20. Dezember 2008 08:50

Ich habe jetzt mal eine neue Maschine Navision 5, Office 2007 und Visual Studio 2008 aufgesetzt. Nichts hat sich geändert, noch immer der gleiche Fehler.
Kann jemand einen Hinweis geben ?

Grüße carstenPaul