Access (mdb) mit NAV 2013R2 öffnen?

20. März 2015 13:12

Hallo,

z. Z. haben wir noch NAV 2009 SP1 (CC). Damit können wir eine Access-Tabelle mit Daten füllen und danach ein Modul aufrufen, das einen Bericht ausdruckt.

Nun bereiten wir ein Update auf NAV 2013 R2 vor. Die Access-Tabelle kann weiterhin per ADO befüllt werden. Vor dem Aufruf des Moduls bekommen wir schon beim Öffnen der Datenbank die Fehlermeldung

"Die Datenbank kann von Microsoft Access nicht geöffnet werden, da sie nicht existiert, ein anderer Benutzer sie bereits im Exclusivmodus geöffnet hat, oder da es sich nicht um eine ADP-Datei handelt."

Die ersten 2 Fälle kann ich ausschliessen. Daraus schliesse ich, dass NAV 2013 R2 Datenbanken im mdb-Format nicht mehr öffnen kann.

Code:
// AccessApp ist Automation 'Microsoft Access 14.0 Object Library'.Application

IF ISCLEAR(AccessApp) THEN
  CREATE(AccessApp,FALSE,TRUE);
   
AccessApp.OpenCurrentDatabase(BDESetup."BDE FA-Exportpfad", FALSE, '');

AccessApp.Run('RunReport',BDESetup."Access Report Name", ProdOrderNo);
//Check := AccessApp.Run('RunReport',BDESetup."Access Report Name", ProdOrderNo);
//message(format(check));

AccessApp.CloseCurrentDatabase;
AccessApp.Quit;



Ok, wenn NAV 2013 R2 keine mdb mehr mag, dann konvertiere ich die Datenbank halt in .accdb, dachte ich mir.

Dann wird der Access-Bericht sogar gestartet und ausgedruckt. Dummerweise stirbt der NAV-Client mit folgender Meldung.

"Der Server XXX was unable to process the request. Close the application and start it again."

Der Access-Prozess muss per Task-Manager gekillt werden. Ob ich den Rückgabewert (Check) abfange oder nicht, macht keinen Unterschied. Vor dem "message" ist der Client bereits tot.

Als ich mich vor paar Wochen mit dem Thema beschäftigt habe, ist der Client glaub' nicht gestorben. Mit der .accdb Datenbank hab ich aber dennoch ein weiteres Problem. Per ADO kann ich nicht in die Access-Tabelle schreiben. Da erhalte ich die Fehlermeldung

"Nicht erkennbares Datenbankformat \\<Pfad>\AccessDB.accdb"

So schreibe ich in die Tabelle:

Code:
// ODBCdbConnection ist Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Connection
// AccessTable ist Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset

CREATE(ODBCdbConnection,FALSE,TRUE);
ODBCdbConnection.ConnectionString('PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=' + BDESetup."BDE FA-Exportpfad");

ODBCdbConnection.Open();
CREATE(AccessTable,FALSE,TRUE);

AccessTable.Open(BDESetup."Access Exp. Table Name",ODBCdbConnection,1,2);

IF BDEExpBuffer.FIND('-') THEN
  REPEAT

    AccessTable.AddNew;
    AccessTable.Update('BDE-ID',BDEExpBuffer."BDE-ID");
    AccessTable.Update('Production Order No',BDEExpBuffer."Prod. Order No.");
    AccessTable.Update('Operation No',BDEExpBuffer."Operation No.");
    AccessTable.Update('BarCode',BDEExpBuffer."BDE Barcode Nr.");
    //usw
  UNTIL BDEExpBuffer.NEXT = 0; 

AccessTable.Close;
ODBCdbConnection.Close;
CLEAR(ODBCdbConnection);
CLEAR(AccessTable);


Die große Frage ist jetzt, welchen Weg ich gehen soll, um das Problem zu lösen.

1. Ich bleibe bei mdb und suche eine Lösung um das Modul, bzw. Report öffnen zu können.

2. Ich benutze accdb und suche eine Lösung, um in die Tabelle zu schreiben. Das Sterbe-Problem muss auch noch gelöst werden.

3. Ich generiere einen NAV-Report. Der muss aber einen "Industrial 2of5" Barcode vertikal drucken können. Das ist wahrscheinlich das größte Problem.

Kann mir jemand einen Tip geben, wie ich das Problem mit einem dieser 3 Möglichkeiten lösen kann?
Vielleicht kann jemand auch eine der Möglichkeiten auch generell für nicht lösbar deklarieren? So nach dem Motto "Weg 1 kann nicht gehen .. Weg 2 muss gegangen werden".
Oder muss das mit Dot.Net gemacht werden? Davon hab ich Null Ahnung.

Die anderen Beiträge zum Thema Access hab ich gelesen. Vielleicht kam bisher noch keiner auf die Idee, Access mit NAV 2013 R2 öffnen zu wollen.

Schönen Gruß

Andi

Re: Access (mdb) mit NAV 2013R2 öffnen?

20. März 2015 13:51

Ich generiere einen NAV-Report. Der muss aber einen "Industrial 2of5" Barcode vertikal drucken können. Das ist wahrscheinlich das größte Problem.


Besorge dir einen Truetype- Font dafür, dann sollte das auch in RDLC- funktionieren (hätte auch in CC so funktioniert). :wink:
Evtl. musst du den übergebenen Daten noch aufbereiten, damit der Font auch das darstellt, was du willst.(D.h. damit "12345" ausgegeben wird, müsste evtl. "Üx1D#" übergeben werden) :-(

Oft gibt es dafür aber Beispiele in VB, die kannst du im RDLC- Code laufen lassen, oder du bereitest die die Daten schon im C/AL auf.


Gruß, Fiddi

Re: Access (mdb) mit NAV 2013R2 öffnen?

25. März 2015 09:28

Ich habe tatsächlich einen Font für Industrial 2of5. Wusste ich gar nicht. Glück gehabt.

Dann läßt es sich natürlich mit einem RDLC-Report umsetzen. Das Property "WrittingMode = Rotate270" dreht den Barcode dann wir gewünscht.

Andi