分类:
2009-10-11 13:47:46
来源:cww
会传回MultiResultset的一种情况是,rdoConnection/rdoQuery 中SQL 指令中本身就含
有两个以上的Select 指令,而OpenLink Informix ODBC Driver不提供这个功能,而SQL
Server有提供,但是有几个地方要注意。
如果使用rdUseServer的Cursor,那只能与rdForwardOnly, rdConcurReadonly, Rowsetsize
= 1来搭配(其实这和rdUseNone相同),如果与rdUseOdbc,才没有以上的限制。
经测试,似乎只能用OpenResultset来达成,没有办法用rdoQuery当作rdoConnection物件
方法的方式来做(至少我没有做成,不过曾在其他地方见过如此做的范例),而rdoConnection
的Query_Complete事件要在所有的Query都完成时才会发生。
Set en = rdoEnvironments(0)
Set cn = New rdoConnection
cn.CursorDriver = rdUseServer
connstr = "DSN=SQLSRV;UID=cww;PWD=jjh5612;"
cn.Connect = connstr
On Error GoTo ConnectErr
cn.EstablishConnection rdDriverNoPrompt, False
Dim sql As String
sql = "Select * from qppfa where case_no = 'E8701761' and seq between 1 and 40; select * from testtab"
Set qry = cn.CreateQuery("MyQuery", sql)
qry.CursorType = rdOpenForwardOnly
qry.LockType = rdConcurReadOnly
qry.RowsetSize = 1
On Error GoTo QryErr
Set rs = qry.OpenResultset
'do Something
rs.MoreResults '取得下一个Resultset
'do something
Exit Sub
ConnectErr:
errstr = GetrdoErrorDescription
ans = MsgBox(errstr, _
vbRetryCancel + vbCritical, "连线错误")
If ans = vbRetry Then
Err.Clear
rdoErrors.Clear
Resume
Else
Resume ExitErr
End If
Exit Sub
QryErr:
errstr = GetrdoErrorDescription
ans = MsgBox(errstr, _
vbRetryCancel + vbCritical, "查询错误")
If ans = vbRetry Then
Err.Clear
rdoErrors.Clear
Resume
Else
Resume ExitErr
End If
Exit Sub
ExitErr: