How to connect other Database ?

Christian_Buehl
Member Posts: 145
I'm looking for a solution to write Data from Navision into a different database. A connection via ODBC (DAO or ADO) would be preferred.
It's not about reading or writing Navision via ODBC from outside. I want to write data into a SQL-Database (MySQL, MAXDB) directly after a user has pushed a button in Navision.
Is there anyone who can show me a tipp how to do this?
It's not about reading or writing Navision via ODBC from outside. I want to write data into a SQL-Database (MySQL, MAXDB) directly after a user has pushed a button in Navision.
Is there anyone who can show me a tipp how to do this?
0
Comments
-
mmmh using automation objects may be possible for example ADO ? but i haven't any experience with that ...0
-
It took some sweat on my old brain, but now it works with ADODB.
To help others here the code, here used with a simple Access Database.
Other Databases should work with just a different connection stringExample for ADO-Access on external ODBC-Database ADOConn Automation 'Microsoft ActiveX Data Objects 2.7 Library'.Connection ADOrs Automation 'Microsoft ActiveX Data Objects 2.7 Library'.Recordset ConnStr Text 200 AnzCount Text 30 OpenMethod Integer LockMethod Integer Name Text 200 Str Text 200 // Test ODBC-Connector OpenMethod := 2; // 1=adOpenKeyset; 2=adOpenDynamic; 3= adOpenStatic LockMethod := 3; // 1=dLockreadonly; 2=adLockPessimistic; 3=adLockOptimistic; 4=adLockBatchOptimistic CREATE(ADOconn); ConnStr := 'PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TestDB.mdb'; ADOconn.Open(ConnStr); CREATE(ADOrs); ADOrs.Open('Select Name,Street from T1',ADOconn,OpenMethod,LockMethod); ADOrs.MoveFirst; Name := ADOrs.Fields.Item('Name').Value; Str := ADOrs.Fields.Item('Street').Value; // MESSAGE('Name %1 - Street %2', Name, Str); ADOrs.MoveNext; Name := ADOrs.Fields.Item('Name').Value; Str := ADOrs.Fields.Item('Street').Value; // MESSAGE('Name %1 - Strasse %2', Name, Str); // Update current data ADOrs.Update('Street','Testroad'); ADOrs.Update('Name','Anyone'); // Insert new Data ADOrs.AddNew; ADOrs.Update('Strasse','New Street Text'); ADOrs.Update('Name','New name'); ADOrs.Close; ADOconn.Close; CLEAR(ADOrs); CLEAR(ADOconn);
0 -
Hi,
I tried to use your code to connect to a MySQL database using the MySQL ODBC driver.
It works fine when im reading data from the MySQL database, but i can not write data back with your eksample. It returns some errors in danish and translated into english "One or more error occured by a OLE DB action on several steps"
Any help is welcome
Best Regards
Thomas Son.0 -
This is an excerpt of an working connection to mysql via ADO.
For more use look on proper delimiters and correct quoting of special characters like \ or ' .
Hope this helpsOpenMethod := 1; // 1=adOpenKeyset; 2=adOpenDynamic; 3= adOpenStatic LockMethod := 3; // 1=dLockreadonly; 2=adLockPessimistic; 3=adLockOptimistic; 4=adLockBatchOptimistic CREATE(ADOconn); ConnStr := 'Driver={MySQL ODBC 3.51 Driver}; SERVER=webtest; Database=db; User=anyone; Password=xxxx; Option=3';; ADOconn.Open(ConnStr); CREATE(ADOrs); SQLstring := STRSUBSTNO('Select UID,username from db.users where username = "%1"',AccessID); ADOrs.Open(SQLstring,ADOconn,OpenMethod,LockMethod); IF ADOrs.EOF OR ADOrs.BOF THEN BEGIN // insert nötig SQLstring := 'INSERT INTO db.users SET username="%1",usergroup="%2", adr="%3" '; SQLstring := STRSUBSTNO(SQLstring, User, TGroupNum, address) ADOconn.Execute(SQLstring); ADOrs.UpdateBatch; ADOrs.Requery; ADOrs.MoveFirst; TUID := ADOrs.Fields.Item('UID').Value; END ELSE BEGIN SQLstring := 'Update db.users set username="%1", address="%2", '; SQLstring := STRSUBSTNO(SQLstring, User, address ; ADOconn.Execute(SQLstring); ADOrs.UpdateBatch; ADOrs.Requery; ADOrs.MoveFirst; TUID := ADOrs.Fields.Item('UID').Value; END; ADOrs.Close; CLEAR(ADOrs); ADOconn.Close; CLEAR(ADOconn);
0 -
hi Christian_Buehl, your code work fine for me but only in Classic Client NAV, when try to connect in RTC NAV give the erro "The Microsoft Jet database engine can not open the file xxx.mdb. He was already opened exclusively by another user or you need permission to view its data"
Please can you help me to solve this problem?!Christian_Buehl wrote: »It took some sweat on my old brain, but now it works with ADODB.
To help others here the code, here used with a simple Access Database.
Other Databases should work with just a different connection stringExample for ADO-Access on external ODBC-Database ADOConn Automation 'Microsoft ActiveX Data Objects 2.7 Library'.Connection ADOrs Automation 'Microsoft ActiveX Data Objects 2.7 Library'.Recordset ConnStr Text 200 AnzCount Text 30 OpenMethod Integer LockMethod Integer Name Text 200 Str Text 200 // Test ODBC-Connector OpenMethod := 2; // 1=adOpenKeyset; 2=adOpenDynamic; 3= adOpenStatic LockMethod := 3; // 1=dLockreadonly; 2=adLockPessimistic; 3=adLockOptimistic; 4=adLockBatchOptimistic CREATE(ADOconn); ConnStr := 'PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TestDB.mdb'; ADOconn.Open(ConnStr); CREATE(ADOrs); ADOrs.Open('Select Name,Street from T1',ADOconn,OpenMethod,LockMethod); ADOrs.MoveFirst; Name := ADOrs.Fields.Item('Name').Value; Str := ADOrs.Fields.Item('Street').Value; // MESSAGE('Name %1 - Street %2', Name, Str); ADOrs.MoveNext; Name := ADOrs.Fields.Item('Name').Value; Str := ADOrs.Fields.Item('Street').Value; // MESSAGE('Name %1 - Strasse %2', Name, Str); // Update current data ADOrs.Update('Street','Testroad'); ADOrs.Update('Name','Anyone'); // Insert new Data ADOrs.AddNew; ADOrs.Update('Strasse','New Street Text'); ADOrs.Update('Name','New name'); ADOrs.Close; ADOconn.Close; CLEAR(ADOrs); CLEAR(ADOconn);
0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions