bhlang
asked on
AS400 and ADO. Recordset not bookmarkable?
I am trying to create an ADO Recordset from an AS400 Table and display the recordset in a DataGrid. My problem is that I get an error message stating that my recordset is not bookmarkable. Is there a way to control this under ADO? If I set up a DataEnvironment with a connection and row-returning command, then the resulting recordset is bookmarkable, and works fine with the DataGrid. If I try to do it myself with code (ADODB.Connection, ADODB.Command and ADODB.Recordset) then I get the bookmarkable problem. Any hints/tips/solutions?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Have you tried changing the CursorLocation?
You can also look at your Connection object (from the DataEnvironment) click on the ALL tab and look the properties.
Try these settings.
You can also look at your Connection object (from the DataEnvironment) click on the ALL tab and look the properties.
Try these settings.
Show us the code for what you've tried using the ADODB.Recordset
ASKER
I'll get back to you sometime tomorrow with updates on my code and my Connection settings. I've left work for the day and will be back in the office tomorrow.
ASKER
Here's the code I'm using:
Public cnnAS400 As ADODB.Connection
Public rsDTNAME As ADODB.Recordset
Public Const sysName = "AS400NAME"
Public Const coLib = "COMP02"
Public Sub createAS400Link()
Dim strQuery As String
'Create & Open Connection to Database
Set cnnAS400 = New ADODB.Connection
cnnAS400.ConnectionString = "DRIVER={Client Access ODBC Driver (32-bit)};" & _
"SYSTEM=" & sysName & ";CMT=0;DBQ=" & coLib & "DT;NAM=0;DFT=0;DSP=0;TFT= 0;" & _
"TSP=0;DEC=0;XDYNAMIC=0;RE CBLOCK=0;B LOCKSIZE=5 12;SCROLLA BLE=0;TRAN SLATE=0;" & _
"LAZYCLOSE=0;LIBVIEW=0;REM ARKS=0;CON NTYPE=0;SO RTTYPE=0;L ANGUAGEID= ENU;" & _
"SORTWEIGHT=0;PREFETCH=0;M GDSN=0;"
cnnAS400.Open
'Create Recordset
Set rsDTNAME = New ADODB.Recordset
strQuery = "SELECT MNAME, MCO, MADDR, MSTRT, MCITY, MPROV, MCNTRY, MPO1, MPO2, " & _
"MGROUP, MID FROM " & coLib & "DT.DTNAME Order By MNAME"
rsAS400.Open strQuery, cnnAS400, adOpenDynamic, adLockOptimistic, adCmdText
End Sub
Public cnnAS400 As ADODB.Connection
Public rsDTNAME As ADODB.Recordset
Public Const sysName = "AS400NAME"
Public Const coLib = "COMP02"
Public Sub createAS400Link()
Dim strQuery As String
'Create & Open Connection to Database
Set cnnAS400 = New ADODB.Connection
cnnAS400.ConnectionString = "DRIVER={Client Access ODBC Driver (32-bit)};" & _
"SYSTEM=" & sysName & ";CMT=0;DBQ=" & coLib & "DT;NAM=0;DFT=0;DSP=0;TFT=
"TSP=0;DEC=0;XDYNAMIC=0;RE
"LAZYCLOSE=0;LIBVIEW=0;REM
"SORTWEIGHT=0;PREFETCH=0;M
cnnAS400.Open
'Create Recordset
Set rsDTNAME = New ADODB.Recordset
strQuery = "SELECT MNAME, MCO, MADDR, MSTRT, MCITY, MPROV, MCNTRY, MPO1, MPO2, " & _
"MGROUP, MID FROM " & coLib & "DT.DTNAME Order By MNAME"
rsAS400.Open strQuery, cnnAS400, adOpenDynamic, adLockOptimistic, adCmdText
End Sub
ASKER
I used the DataEnvironment to get the connection string. This connection string works. The resulting recordset (rsDTNAME, not rsAS400 as is listed in the OPEN command) is NOT bookmarkable, and I need it to be in order to use the DataGrid effectively.
ASKER
Well, today it's working for some reason. I did the following:
1. Made sure I set the CursorLocation to adUseClient
2. Changed the Reference from Microsoft ActiveX Data Objects 2.0 Library to Microsoft ActiveX Data Objects 2.1
Not sure which of these changes did the trick, but as I received the advice on the first, and that may have been the problem, I'll give the points to emoreau.
1. Made sure I set the CursorLocation to adUseClient
2. Changed the Reference from Microsoft ActiveX Data Objects 2.0 Library to Microsoft ActiveX Data Objects 2.1
Not sure which of these changes did the trick, but as I received the advice on the first, and that may have been the problem, I'll give the points to emoreau.
ASKER
If I use the DataEnvironment, the Recordset is bookmarkable, and works fine with the DataGrid. If I do it with an ADODB.Recordset, it is not bookmarkable.