分类:
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: