Kbase P111550: Excel DAO Error: 3146 ODBC ? call failed.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  07/12/2005 |
|
Status: Unverified
FACT(s) (Environment):
Windows
OpenEdge 10.0B
SYMPTOM(s):
Excel DAO Error: 3146 ODBC ? call failed.
[DataDirect][ODBC OPENEDGE driver][OPENEDGE]Cursor not opened (7511).
Connection structure is: Excel 2000 (VBA) -> Access 2000 (linked tables) -> OpenEdge 10.0B.
Code fails on the invocation of the Recordset2.Addnew command in the
following code:
Dim DBSODBC as Database
Dim Recordset1 as Recordset
Dim Recordset2 as Recordset
Set DBSODBC = OpenDatabase("C:\NewbidDB\ODBC.mdb")
Set Recordset1 = DBSODBC.OpenRecordset("PUB_TABLE1")
Set Recordset2 = DBSODBC.OpenRecordset("PUB_TABLE2")
Recordset1.Addnew
Recordset1.Fields("Field1").Value = "Value1"
Recordset1.Fields("Field2").Value = "Value2"
Recordset1.Fields("Field3").Value = "Value3"
Recordset1.Update
Recordset2.Addnew
Recordset2.Fields("Field1").Value = "Value1"
Recordset2.Fields("Field2").Value = "Value2"
Recordset2.Fields("Field3").Value = "Value3"
Recordset2.Update
Recordset1.Close
Recordset2.Close
DBSODBC.Close
CAUSE:
Recordset1 needs to be closed before Recordset2 is opened.
FIX:
Modify the code to close the first recordset before a new one is opened:
Dim DBSODBC as Database
Dim Recordset1 as Recordset
Dim Recordset2 as Recordset
Set DBSODBC = OpenDatabase("C:\NewbidDB\ODBC.mdb")
Set Recordset1 = DBSODBC.OpenRecordset("PUB_TABLE1")
Set Recordset2 = DBSODBC.OpenRecordset("PUB_TABLE2")
Recordset1.Addnew
Recordset1.Fields("Field1").Value = "Value1"
Recordset1.Fields("Field2").Value = "Value2"
Recordset1.Fields("Field3").Value = "Value3"
Recordset1.Update
' **** new code ****
Recordset1.Close
DBSODBC.Close
Set DBSODBC = OpenDatabase("C:\NewbidDB\ODBC.mdb")
Set Recordset2 = DBSODBC.OpenRecordset("PUB_TABLE2")
'**** end new code ****
Recordset2.Addnew
Recordset2.Fields("Field1").Value = "Value1"
Recordset2.Fields("Field2").Value = "Value2"
Recordset2.Fields("Field3").Value = "Value3"
Recordset2.Update
Recordset1.Close
Recordset2.Close
DBSODBC.Close