如何使用 ADO FetchProgress 和 FetchComplete 事件
来源:互联网 发布:2017php免杀一句话 编辑:程序博客网 时间:2024/06/08 10:15
系统必备组件
软件要求- 将 FetchProgress 和 FetchComplete 事件在 MDAC 2.5 或更高版本仅正常运行。 您可以从以下 Microsoft Web 站点下载最新版本的 Microsoft 数据访问组件: Microsoft Data Access Components (http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp)
- 如果要开发应用程序在 Microsoft Visual Studio 6.0,然后必须安装 Service Pack 3 或更高版本。 您可以从以下 Microsoft Web 站点安装最新的 Service Pack,Microsoft Visual Studio 6.0: Visual Studio Product Updates (http://msdn.microsoft.com/vstudio/downloads/updates.asp)
- 打开 Recordset 时, 必须为记录集选项指定 adAsyncFetch 。
- 因为将 FetchProgress 和 FetchComplete 事件由 ActiveX 数据对象 (ADO) 客户端游标引擎返回,所以,您必须使用客户端游标。
- 在 Visual Basic 中必须声明在模块级别使用 WithEvents 关键字的 Dim Recordset。
属性
有两个 Recordset 属性影响异步行为的 ADO。 这些属性应设置才能打开 Recordset。- 初始 Fetch 大小 确定多少记录之前获取的同步异步线程会创建。 这允许小 Recordset 创建无需创建线程的额外开销。 此设置为 50 默认情况下。 要保证 FetchProgress 和 FetchComplete 称为,请将此值设置为 0 中。
- 背景 Fetch 大小 确定多少记录获取调用 FetchProgress 事件之间。 它默认情况下设置为 15。
事件
FetchProgressFetchProgress 有四个参数:
- 进度 是 Recordset 中当前的记录数。
第一次调用 FetchProgress ,进度等于初始 Fetch 大小加背景 Fetch 大小。 对于每个其他的调用进行将等于在以前的值加上背景提取大小。 - MaxProgress 是最大值应返回。
MaxProgress 不等于使用将返回的记录的实际数。 ADO 必须以得到此值中提取记录。 这意味着 MaxProgress 只曾经是最佳的猜测。 MaxProgress 通常等于进度以及背景获取大小。
FetchProgess 之前调用 FetchComplete 始终调用。 在这种情况下 Progress 和 MaxProgress 相等相互。 此 MaxProgress 等于中检索的记录的实际数量。 - adStatus 的值确定是否发生任何错误。 此值通常为 adStatusOK 。
可以通过为值 adStatusUnwantedEvent 设置 adStatus 的值来禁用 FetchProgress 事件。 - pRecordset 是对引用本身记录集。
FetchComplete 有三个参数:
- 如果 adStatus 为 adStatusErrorsOccurred,可以检查 pError 来确定已发生什么错误。 如果进行查询您的代码调用 取消 方法,则会发生此情况例如正在执行。
- adStatus 的值确定是否发生任何错误。
可以通过为值 adStatusUnwantedEvent 设置 adStatus 的值来禁用 FetchComplete 事件。 - pRecordset 是对引用本身记录集。
示例代码
下面的示例演示如何在 Visual Basic 中使用 FetchProgress 和 FetchComplete 事件。该示例使用 ODBC 数据源名为连接到 Pubs 数据库 SQL Server 附带的 Pubs。
- 在 Microsoft Visual Basic,创建一个新的 标准 EXE 。 默认情况下,Form 1 添加到项目。
- 在 项目 菜单上单击以选中 引用 ,然后选择 Microsoft ActiveX Data Objects Library 。
- 在 项目 菜单上单击以选中 组件 ,然后选择 Microsoft DataGrid Control 6.0 (OLEDB) 。
- 将 DataGrid 、 文本框 和 CommandButton 拖到 Form 1 上。
- 将以下代码添加到 Form 1 的 代码 窗口:
Option Explicit Const strConn = "DSN=Pubs" Const strDefaultSQL = "SELECT * FROM Titles" Dim cn As ADODB.Connection Dim WithEvents rs As ADODB.Recordset Private Sub Form_Load() Command1.Caption = "Go" Text1.Text = strDefaultSQL Set cn = New ADODB.Connection cn.Open strConn End Sub Private Sub Command1_Click() Dim strSQL As String strSQL = Text1.Text Set rs = New ADODB.Recordset With rs .CursorLocation = adUseClient .Properties("Initial Fetch Size") = 2 .Properties("Background Fetch Size") = 4 Debug.Print "Start" Debug.Print "Initial Fetch Size: " & _ .Properties("Initial Fetch Size") Debug.Print "Background Fetch Size" & _ .Properties("Background Fetch Size") .Open strSQL, cn, , , adAsyncFetch End With End Sub Private Sub rs_FetchProgress(ByVal Progress As Long, _ ByVal MaxProgress As Long, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) Debug.Print "Fetch: " & Progress & _ " Max: " & MaxProgress End Sub Private Sub rs_FetchComplete(ByVal pError As ADODB.Error, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) If adStatus <> adStatusOK Then Debug.Print "Failed" Debug.Print "Error: " & pError.Number & " - " & pError.Description Else Set DataGrid1.DataSource = pRecordset Debug.Print "Done" End If End Sub
- 更改为您的数据库的一个有效的连接字符串的 strConn 以及有效的 SQL 查询返回记录从数据库中更改 strDefaultSQL 。
- 运行代码。 单击 Go 按钮开始读取 Recordset。 在 视图 菜单上单击以选中 立即 窗口。 Visual Basic 的立即窗口中显示异步查询的进度。
- 如何使用 ADO FetchProgress 和 FetchComplete 事件
- How To Use the ADO FetchProgress and FetchComplete Events
- 如何使用ADO.net
- VC如何使用ADO
- VC如何使用ADO
- ADO数据库如何使用?
- ADO数据库如何使用?
- ado如何使用sql函数?
- VC++程序员如何使用ADO?
- ADO如何使用Insert语法
- VC中如何使用ADO
- ADO如何使用Insert语法
- 使用 ADO MD 和 .NET
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 在C#中应用哈希表(Hashtable)
- 什么是WAP?[wap全程认识]
- TOLEContainer部件的用法详解
- Recordset.Open常量速查表
- 向Access插入数据时提示“标准表达式中数据类型不匹配”的解决方法
- 如何使用 ADO FetchProgress 和 FetchComplete 事件
- Pattern-Oriented Software Architecture v1巨详细读书笔记 3
- 一个基于JUnit的测试框架
- Prototype 1.6 边学边译 -- Ajax Ajax.Updater
- oracle 数据库里查看表空间使用状况
- ADO Cancel 方法
- How To Use the ADO FetchProgress and FetchComplete Events
- 再说说SOA...
- 一剂良方克顽疾 英特尔I/O加速技术综述