Inserting into MS Access from Navision

sbhamidi
Member Posts: 22
I'm trying to insert data from Navision 2.60 E into MS Access. I'm using the following code:
=================================
"The call to member Execute failed. Microsoft OLE DB Provider for ODBC Drivers returned the following message:
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 4."
=================================
I was doing a simple DataConn.Execute at first, but now used the empty variables RecordsAffected and Options as parameters to overcome this error. But still the error persists.
I would appreciate it if anyone could point me in the right direction.
TIA
// DataConn is an Automation datatype and is a 'Microsoft ActiveX Data Objects 2.7 Library'.Connection // DataRSet is an Automation datatype and is a 'Microsoft ActiveX Data Objects 2.7 Library'.Recordset CREATE(DataConn); DataConn.ConnectionString := 'DBQ=F:\247 Deliverable\Testdb.mdb;DRIVER={Microsoft Access Driver (*.mdb)}'; CREATE(DataRSet); DataConn.Open; Window.UPDATE(1,'Customer'); strSQL := 'INSERT INTO Customer_Service_Level(Customer_No_,Service_Level_Code,Default,Service_Level_Description) '; strSQL := strSQL + 'VALUES("2464212230","2","-1","SLOW")'; RecordsAffected := ''; Options := 0; DataRSet := DataConn.Execute(strSQL,RecordsAffected,Options);When I try to run this test, I get the error:
=================================
"The call to member Execute failed. Microsoft OLE DB Provider for ODBC Drivers returned the following message:
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 4."
=================================
I was doing a simple DataConn.Execute at first, but now used the empty variables RecordsAffected and Options as parameters to overcome this error. But still the error persists.
I would appreciate it if anyone could point me in the right direction.
TIA
0
Comments
-
I think the the SQL-statement must be
strSQL := 'INSERT INTO Customer_Service_Level SELECT '2464212230' as Customer_No_, '2' AS Service_Level_Code, '-1' AS Default, 'SLOW' AS Service_Level_Description'0 -
We also use Navision 2.60G -
I have a test mdb connecting Navision using DAO and C/ODBC.
The connection is made without a problem.
I can even access data from a table i.e. "Item" table using a recordset and the data can be displayed in an Access form.
i.e.
StrSQL = "SELECT * FROM Item WHERE Item.No_='24351189595'"
Set rst = Conn.OpenRecordset(StrSQL, dbOpenDynamic)
me.txtbox=rst![Description]
When I attempt to do the same with another table i.e. "Purchase Line" table, I get "ODBC - call failed" error messages.
StrSQL2 = "SELECT * FROM [Purchase Line] WHERE [Purchase Line].[No_]='24351189595'"
Set rst = Conn.OpenRecordset(StrSQL2,dbOpenDynamic)
Can anyone tell me why it will work with one table and not another?0 -
I have (since my last post) achieved what I needed to do.
I will post examples of what I did to hopefully help anyone else who's had the same problem -
1) I installed C/ODBC from our Navision disk.
2) I set up a System DSN with minimal info in it
i.e. DSN name
Description
Path to the server program folder (a mapped drive)
I left all else blank and I left the Options as default.
3) I began a new module called "NavisionConnection"
4) I put in the following two procedures :
Public Sub OpenNavisionConnection()
Dim NavName As String 'User credentials for Navision
Dim NavPass As String
NavName = DLookup("NavUserName", "Users", "UserName='" & Forms!Login!Uname & "'")
NavPass = DLookup("NavPassWord", "Users", "UserName='" & Forms!Login!Uname & "'")
Set WrkODBC = CreateWorkspace("", "", "", dbUseODBC)
'****** connection made here ******
Set Conn = WrkODBC.OpenConnection"", , , "ODBC;DSN=dsnname;CSF=Yes;;
DRIVER={C/ODBC 32 bit};SName=servername;NType=tcp;
CN=companyname;UID=" & NavName & ";PWD=" & NavPass & ";OPT=Text;QTYesNo=Yes;QT=60;IT=a-z,A-Z,0-9,_;
RO=No;CC=Yes;BE=Yes;")
End Sub
Public Sub CloseNavisionConnection()
'******Close the Navision connection******
WrkODBC.Close
Set Conn = Nothing
End Sub
They are both public and, therefore, accessible so they can be reused.
I have a table in my Access DB for user details etc. - I used the DLookup calls to retrieve the appropriate details to use in the connection string.
5) In a form, I can call upon the conn object (i.e. with a button) :
Private Sub whatever_DblClick(Cancel As Integer)
Dim StrSQL As String
Dim rst As DAO.Recordset
'******Check Inventory******
StrSQL = "SELECT * FROM Item WHERE Item.No_='" & Thing & "'"
Set rst = Conn.OpenRecordset(StrSQL, dbOpenDynamic)
'***and so on using the normal recordset operations***
'***when you're done***
Set rst = Nothing
CloseNavisionConnection
End Sub
I don't think I've missed anything out - if I have, apologies.
This method of connecting, then disconnecting when finished also helps keeps the number of concurrent sessions to a minimum.
Have fun.0 -
Oh yes, I did forget -
The answer to my post dated : 17/03/05 was that with the ... IT=a-z,A-Z,0-9,_; ... setting in the connection string, all non-alphanumeric characters need to be replaced with an underscore.
i.e.
Dim StrSQL as String
Dim rst as DAO.Recordset
StrSQL = SELECT * FROM Purchase_Line WHERE Purchase_Line.Qty__to_Receive >0 '(the dot notation to specify fields remains)
set rst = conn.OpenRecordset(StrSQL, dbOpenDynamic)
refer to fields in the recordset as usual (retain underscores) :
rst![Qty__to_Receive]
etc. etc.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