adCmdUnknown 8 默认值。指示 CommandText 属性中命令的类型未知。
adCmdFile 256 按持久存储的 Recordset 的文件名计算 CommandText。只与 Recordset.Open 或 Requery 一起使用。
adCmdTableDirect 512 按表名计算 CommandText,该表的列被全部返回。只与 Recordset.Open 或 Requery 一起使用。若要使用 Seek 方法,必须通过 adCmdTableDirect 打开 Recordset。
该值不能与 ExecuteOptionEnum 的值 adAsyncExecute 组合。
一般用这个参数adAsyncFetch来控制,另外需要
.Properties("Inital Fetch Size")=50
另外可以参考《MSCE的VB分布式应用的开发》
举例,Vb6.0的代码:
Dim AdoRs as ADODB.Recordset
set AdoRs =new ADODB.Recordset
With AdoRs
.CursorLocation = adUseClient
.Properties("Initial Fetch Size") = 50
.Open mstrSQL, AdoCn, adOpenStatic, adLockOptimistic, adAsyncFetch
If .BOF = False Or .EOF = False Then
'--------------
else
End if
End With
总结:很多的网友都问大数量加载的问题,现在这种方式可以较快的返回数据。一般100万数据,前面50条只需要5~6秒就返回来!这个方式需要注意的是:
1。如果返数据量太大,而中途要取消,需要用AdoCn.Cancel来取消查询,否则数据会继续返回数据。
2。如果数据量太大,记录集的释放会有问题。如果数据量在200M~300M时,set adors=nothing 不会快速释放高速缓存。希望有其它网友能够提供自己的见解。
3。对大数据量时,C/S开发中提供翻页/网格的滚动条结合的方式,对用户来话是极为方便。有的网友提供用存储过程来实现。本人在开发过程用分页控件与异步加载的数据源结合,实现了很好的数据浏览。
开发环境:VB6.0+MS SQL Server 2K +Windows ADS 2K通过。
|
正在阅读:vb精彩教程:数据异步加载vb精彩教程:数据异步加载
2004-05-24 10:18
出处:PConline
责任编辑:linjixiong
键盘也能翻页,试试“← →”键