Sven Schneider
29-06-04, 18:23
Folgendes Problem :
einem ADO-recordset kann ich u.a. folgende properties zuweisen :
Set rsSql = CreateObject("ADODB.Recordset")
rsSql.CursorType = adOpenDynamic
rsSql.CursorLocation = adUseServer
rsSql.LockType = adLockReadOnly
Weiter im Code :
Set cn400 = CreateObject("ADODB.Connection")
Set cmSql = CreateObject("ADODB.Command")
cn400.Provider = "IBMDA400"
cn400.Properties("data source") = "MyServer"
cn400.Open
Set cmSql.ActiveConnection = cn400
cmSql.CommandText = "SELECT * FROM QIWS.QCUSTCDT "
cmSql.CommandType = adCmdText
cmSql.Prepared = True
Wen ich dieses recordset implizit mit der excute Methode eines Command Objekts öffne, werden die properties ignoriert :
Set rsSql = cmSql.Execute '!!!! properties werden nicht berücksichtigt
Öffne ich diese recordset explizit, werden die properties, wie gewünscht, berücksichtigt :
rsSql.Open = cmSql 'properties werden berücksichtigt
Wer kann mir eine Begründung liefern warum.
Hintergund der ganzen Geschichte :
mit der Execude-Methode wird im default nur ein forwardonly-Recordset erstellt, d.h. die recordset-Methoden movefirst bzw. moveprevious funktionieren nicht.
Vielen Dank
Sven
einem ADO-recordset kann ich u.a. folgende properties zuweisen :
Set rsSql = CreateObject("ADODB.Recordset")
rsSql.CursorType = adOpenDynamic
rsSql.CursorLocation = adUseServer
rsSql.LockType = adLockReadOnly
Weiter im Code :
Set cn400 = CreateObject("ADODB.Connection")
Set cmSql = CreateObject("ADODB.Command")
cn400.Provider = "IBMDA400"
cn400.Properties("data source") = "MyServer"
cn400.Open
Set cmSql.ActiveConnection = cn400
cmSql.CommandText = "SELECT * FROM QIWS.QCUSTCDT "
cmSql.CommandType = adCmdText
cmSql.Prepared = True
Wen ich dieses recordset implizit mit der excute Methode eines Command Objekts öffne, werden die properties ignoriert :
Set rsSql = cmSql.Execute '!!!! properties werden nicht berücksichtigt
Öffne ich diese recordset explizit, werden die properties, wie gewünscht, berücksichtigt :
rsSql.Open = cmSql 'properties werden berücksichtigt
Wer kann mir eine Begründung liefern warum.
Hintergund der ganzen Geschichte :
mit der Execude-Methode wird im default nur ein forwardonly-Recordset erstellt, d.h. die recordset-Methoden movefirst bzw. moveprevious funktionieren nicht.
Vielen Dank
Sven