15. März 2021 13:16
Hallo zusammen,
ich habe in einer Codeunit einen Zugriff auf einen MySQL-Server mittels ADO.NET programmiert. Funktioniert problemlos.
Jetzt habe ich eine weitere Codeunit erstellt und so wie ich das sehe alles gleich konfiguriert. Wenn ich den Code starte, dann erhalte ich bei
ADOMySQLConnect := ADOMySQLConnect.MySqlConnection;
sofort den Fehler: "Eine Instanz des folgenden .NET Framework-Objektes kann nicht erstellt werden: Montage MySql-Data, Version..... Typ MySql.Data.MySqlClient.MySqlConnection.
Ich bin ratlos.
Grüße
Ralph71
EDIT: jetzt erscheint schon beim Speichern der Fehler: "Could not load type MySql.Data.mySqlClient.MySqlConnection..."
15. März 2021 16:01
damit ich es richtig verstehe:
in der gleichen DB und dem gleichen NST hast du 2 Codeunits, die auf die gleiche .Net-DLL verzweigen. In Codeunit 1 klappt es, in Codeunit 2 aber nicht?
Falls dem so ist, bitte einfach nochmal wirklich die Variablen etc. prüfen.
15. März 2021 23:16
So, einen Schritt weiter. Jetzt funktioniert es überhaupt nicht mehr. Zumindest das ist jetzt "logisch".
Eine Ursache habe ich wohl gefunden. Der ADO.NET Treiber am Server war Version 8.0.23. NAV hat jedoch unter den Variablen nur 8.0.22 angeboten.
Um das ganze abzukürzen habe ich Version 8.0.22 installiert. Gleicher Fehler. Ich habe gewinne den Eindruck, dass der NAV-Client auf einen anderen ADO.NET-Treiber zugreifen will, als ich denke. Ich installiere den Treiber am NAV-Server.
Insgesamt hat das Ganze alles schon funktioniert. Ich wiederhole mich: ich bin echt ratlos :(
EDIT: wieder einen Schritt weiter. Am Client muss zum Entwickeln ebenfalls der ADO.NET-Treiber installiert sein. Auch iwi logisch. Dh am Server als auch am Client sind der gleiche Treiber installiert. Aber, gleicher Fehler.
16. März 2021 09:44
also du kannst die ADO.Net-DLL im DevClient auswählen, trotzdem wirft er dir nen Fehler beim kompilieren? <<--- macht keinen Sinn
demnach: welcher Fehler tritt denn jetzt genau wann (bei welcher Aktion) auf
16. März 2021 10:07
Hallo,
doch das kann schon sein, wenn man keinen oder den falschen Konstruktor aufruft.
Manchmal gibt es auch keine Konstruktoren, weil die neuen Objekte Ergebnis eines Aufrufs einer statischen Prozeudur sind.
Gruß Fiddi
16. März 2021 10:37
Also:
Am NAV-Tier ist installiert: ADO.NET Version 8.0.22 -->https://dev.mysql.com/downloads/connector/net/
Am Client ist installiert: ADO.NET Version 8.0.22
Unter Globals kann ich auswählen bzw zuordnen:
Name DataType Subtype Length
ADOConnect Automation 'Microsoft ActiveX Data Objects 6.1 Library'.Connection
ADOMySQLConnect DotNet MySql.Data.MySqlClient.MySqlConnection.'MySql.Data, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'
Code (so beginnt der Code, also kein Teilstück):
ConnectionString := 'Server=172.XX.X.XX;Port=XXXX;Database=test;Uid=user;Pwd=12345';
ADOMySQLConnect := ADOMySQLConnect.MySqlConnection;
Nach ADOMySQLConnect. werden mir vom System alle Methoden angeboten. Dh. die Variable ist korrekt eingebunden.
Der Code lässt sich natürlich speichern und kompilieren.
Erste Code-Zeile ist bedeutungslos.
Die zweite Zeile wirft folgenden Fehler:
Eine Instanz des folgenden .NET Framework-Objekts kann nicht erstellt werden: Montage MySql.Data, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, Typ MySql.Data.MySqlClient.MySqlConnection.
Überall lese ich "Got to the property of the DotNet variable and make Run on Client as YES" bzw NO wenn auf Server --> wo soll das sein?
@fiddi: hilft mir jetzt nicht direkt weiter.... :(
16. März 2021 11:06
Hallo,
irgend etwas kann da nicht stimmen in deinem Code.
Zum einen scheinst du Automations(ADOConnect) und Dotnet (ADOMySQLConnect) zu mischen, das wird nicht zusammen funktionieren.
Zum anderen, wo lässt du die DotNet- Variable instanzieren, auf dem Server oder auf dem Client? Auf dem Client wird das nicht funktionieren.
Hast du den Servicetier nach der Installation des ADO-Treibers neu gestartet?
Gruß Fiddi
16. März 2021 12:19
naja, sonderlich lange ist der Code ja nicht. ;)
Zum einen scheinst du Automations(ADOConnect) und Dotnet (ADOMySQLConnect) zu mischen, das wird nicht zusammen funktionieren. --> Sondern?
Zum anderen, wo lässt du die DotNet- Variable instanzieren, auf dem Server oder auf dem Client? Auf dem Client wird das nicht funktionieren. --> Gute Frage. wo kann ich das denn einstellen? Scheint wohl auf das hier abzuzielen: "Got to the property of the DotNet variable and make Run on Client as YES"
Hast du den Servicetier nach der Installation des ADO-Treibers neu gestartet? --> Nein, kann ich aber erst heute Abend, weil sonst alle User "abfliegen"
16. März 2021 12:24
Hallo,
1. Lass die Automation mal weg, die scheint hier flüssig zu sein. Es sei denn, du hast noch eine andere DB- Verbindung. Das dürfte aber eh nicht funktionieren, da der Server keine Automations mehr kann.
2. Ja das ist die richtige Property. "Run on Client" sollte auf "NO" sein.
3. den Neustart sollten wir erst mal abwarten, bevor wir hier weiter mutmaßen.
Gruß Fiddi
16. März 2021 12:50
Ralph71 hat geschrieben:Hast du den Servicetier nach der Installation des ADO-Treibers neu gestartet? --> Nein, kann ich aber erst heute Abend, weil sonst alle User "abfliegen"
entwickelst du auf dem Livedienst? ...soll heißen -
bitte nicht! - neuen NST und selbstverständlich auch ne TestDB anlegen und nutzen!
benutze bitte die Code-und Zitat-Funktion - liest sich dann besser ;)
16. März 2021 15:36
Auf TestDB. Sollte reichen.
NST?
16. März 2021 15:40
NST = Navision Service Tier
17. März 2021 14:23
Hallo,
gelöst. Neustart des NST saved my day.
Danke für die echt gute Unterstützung.
Grüße
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.