- 浏览: 197981 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (137)
- Android (12)
- linux (9)
- rails (3)
- 经验总结 (39)
- 工作、项目 (9)
- 生物信息,blast (2)
- java (12)
- 论点 (1)
- sql (9)
- javascript (1)
- vb (8)
- 发布的程序 (1)
- 感动编程 (1)
- asp (3)
- excel (1)
- iis (1)
- access (2)
- matlab 图像 (2)
- matlab (2)
- jQuery (2)
- MAMP PRO (1)
- orcal mac os python (1)
- regular expression (1)
- linux grep awk (1)
- numpy (1)
- h5py (1)
- Heritrix (1)
- servlet (1)
- hadoop (1)
- copyFromLocal (1)
- 气象 (0)
最新评论
-
xiaoyao3857:
这是什么原理呢?还有,为什么我设好之后,运行appletvie ...
警告:不能读取 AppletViewer 的属性文件解决 -
阿浊I:
I think so,this work had done a ...
How to change max_allowed_packet value in mysql? -
zhuorulin:
丁林.tb 写道 If you don't use globa ...
How to change max_allowed_packet value in mysql? -
丁林.tb:
If you don't use global or use ...
How to change max_allowed_packet value in mysql?
FetchProgress 事件可为您提供对记录集可用于向用户显示进度指示器的当前状态的信息。
完成记录集时激发 FetchComplete 事件加载。
更多信息
系统必备组件软件要求 FetchProgress 和 FetchComplete 事件在 MDAC 2.5 或更高版本中只工作正常。 您可以从下面的 Micro...
系统必备组件
-
FetchProgress 和 FetchComplete 事件在 MDAC 2.5 或更高版本中只工作正常。 您可以从下面的 Microsoft 网站下载最新版本的 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 或更高版本已安装。 您可以安装最新的 service pack,Microsoft Visual Studio 6.0 为从下面的 Microsoft 网站:
Visual Studio Product Updates (http://msdn.microsoft.com/vstudio/downloads/updates.asp)
编码要求
- 当您打开记录集时,您必须为记录集选项指定 adAsyncFetch。
- 您必须使用客户端游标,因为由 ActiveX 数据对象 (ADO) 客户端游标引擎返回 FetchProgress 和 FetchComplete 事件。
- 在 Visual Basic 必须声明在模块级别用 WithEvents 关键字使用 Dim Recordset。
属性
有两个影响 ADO 的异步行为的记录集属性。 应能打开记录集之前设置这些属性。
- 提取的初始大小 决定之前创建异步线程同步被提取多少条记录。 这允许小型的记录集,以创建无需创建一个线程的额外开销。 默认情况下,这是设置为 50。 若要保证称为 FetchProgress 和 FetchComplete,请将此值设置为 0。
- 背景抓取大小 确定多少条记录被提取到 FetchProgress 事件调用之间。 默认情况下,这是设置为 15。
事件
FetchProgress
FetchProgress 具有四个参数:
-
进度 是当前记录集中的记录数。
第一次调用 FetchProgress,进度是等于初始提取大小加上背景抓取的大小。 对于每个附加的调用进度等于以前的值加上背景抓取大小。 -
MaxProgress 是要返回预期的最大值。
MaxProgress 不等于实际将返回的记录数。 ADO 具有提取记录以获取此值。 这意味着 MaxProgress 以往任何时候都只是最佳猜测。 MaxProgress 通常等于进度加上背景抓取的大小。
FetchProgess 始终调用 FetchComplete 之前调用。 在这种情况下进度和 MaxProgress 是为彼此相等。 此 MaxProgress 等于实际的检索的记录数。 -
adStatus 的值确定是否发生了任何错误。 此值通常是 adStatusOK。
您可能会通过 adStatus 的值设置为值 adStatusUnwantedEvent 禁用 FetchProgress 事件。 - pRecordset 是对该记录集本身的引用。
FetchComplete
FetchComplete 具有三个参数:
- 如果 adStatus adStatusErrorsOccurred,您可以检查以确定发生了什么错误 pError。 如果您的代码调用 Cancel 方法执行查询之前,可能会发生这种情况例如执行。
-
adStatus 的值确定是否发生了任何错误。
您可能会通过 adStatus 的值设置为值 adStatusUnwantedEvent 禁用 FetchComplete 事件。 - pRecordset 是对该记录集本身的引用。
示例代码
下面的示例演示如何使用 Visual Basic 中的 FetchProgress 和 FetchComplete 事件。
该示例使用名为 Pubs 一个 ODBC 数据源连接到附带 SQL Server 的 Pubs 数据库。
- 在 Microsoft Visual Basic,创建新的 标准 EXE。 默认情况下,Form1 添加到项目。
- 在 项目 菜单上单击选择 引用,然后选择 Microsoft ActiveX 数据对象库。
- 在 项目 菜单上单击以选择 组件,然后选择 Microsoft DataGrid 控件 6.0 (OLEDB)。
- 将一个 DataGrid、 一个 文本框 中和 命令按钮 拖到 Form1 上。
- 下面的代码添加到 Form1 的 代码 窗口:
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 改为您的数据库有效的连接字符串和 strDefaultSQL 更改为有效的 SQL 查询从数据库返回的记录。
- 运行代码。 单击 搜索 按钮开始读取记录集。 在 视图 菜单上单击以选择 即时 窗口。 Visual Basic 立即窗口显示异步查询的进度。
*********************************************************
试了不行
下面的行
' WithEvents 關鍵字宣告物件類別的變數。
' 引發事件的物件稱作事件來源 (event source),來處理事件來源所引發的事件。
' WithEvnets 用來對應 ActiveX 物件所引發的事件。僅適用於物件類別模組。
' 您可以用 WithEvents 來個別宣告變數,但不可用來建立陣列,也不可與 New 同時使用。
Dim WithEvents cn As ADODB.Connection
Dim WithEvents Recordset物件 As ADODB.Recordset
Private Sub cn_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
' 資料庫連線建立完成會觸發 ConnectComplete 事件
End Sub
Private Sub cn_Disconnect(adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
' 中斷資料庫連線會觸發 Disconnect 事件
End Sub
Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pCommand As ADODB.Command, _
ByVal pRecordset As ADODB.Recordset, _
ByVal pConnection As ADODB.Connection)
' 當 Connnection 物件使用 Execute 方法執行 SQL 命令完成時會觸發 ExecuteComplete 事件
End Sub
Private Sub Form_Load() ' 表單載入事件
OpenCN ' 開啟資料庫連線
End Sub
Private Sub OpenCN() ' 開啟資料庫連線 ; Connection 的非同步執行
Dim strCN As String
' 因為使用 WithEvents , 所以必須再使用 New 關鍵字來建立一個物件類別的新執行個體
Set cn = New ADODB.Connection
' 資料庫連線字串
strCN = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:/XXOO/ABC.mdb;Persist Security Info=False"
With cn
'CursorLocation 屬性 , 設定或傳回資料指標服務的位置‧
'adUseClient 使用本端資料指標程式庫所提供的用戶端資料指標‧
' 本端資料指標服務通常具備多項驅動程式之資料指標所沒有的功能,
' 因此,就可以啟動的功能而言,使用這個設定值有其優點‧對於往後追溯相容性,
' 同義字的 adUseClientBatch 也受支援‧
'adUseServer 預設值‧使用資料提供者或驅動程式提供者所提供的資料指標‧
' 這些指標有時候具有很大的彈性,可容許他人對資料源所做的變更‧
' 然而,Microsoft Client Cursor Provider (例如不相關的 Recordset) 的某些功能,
' 無法用伺服端的資料指標來模擬,因而在這個設定值下不能使用這些功能‧
.CursorLocation = adUseClient
'adConnectUnspecified (預設值) 同步化建立連線。
'adAsyncConnect 非同步化建立連線。可以使用 ConnectComplete 事件來確定連線資料庫是否完成。
.Open strCN, , , adAsyncConnect
End With
'adStateClosed 資料庫連線狀態為關閉
'adStateOpen 資料庫連線狀態為開啟
Do Until cn.State = adStateOpen
' Do Loop 迴圈是為了等待資料庫連線建立完成
' 若無此迴圈 , 則程式將繼續往下執行 (資料庫連線會繼續非同步的執行建立),
' 而不等待資料庫的連線建立是否完成
DoEvents
Loop
End Sub
Private Sub OpenRS() ' 開啟資料錄(集) ; Connection 的非同步執行
' 常數 說明
' adCmdText 表示提供者會將 Source 評估為指令的文字定義。
' AdCmdTable 表示 ADO 會產生一個 SQL 查詢,從 Source 中指定的資料表傳回所有資料列。
' AdCmdTableDirect 表示提供者會從 Source 中指定的資料表傳回所有資料列。
' AdCmdStoredProc 表示提供者會將 Source 評估為一個預存程序。
' AdCmdUnknown 表示 Source 引數中未知的指令類型。
' AdCmdFile 表示保留的 (已儲存的) Recordset 會從 Source 中指定的檔案還原。
' AdAsyncExecute 表示 Source 作非同步執行。
' AdAsyncFetch 表示在 Initial Fetch Size 屬性中指定的初始數量被抓取後,剩下的資料列就會被非同步地抓取。
' 如果所需的資料列未被抓取,則會凍傷主要的執行緒,直到取得所需的資料列。
' AdAsyncFetchNonBlocking 表示在抓取時,絕不凍結主執行緒。
' 如果未抓取到所需的資料列,則目前的資料列會自動移到檔案的尾端。
Set Recordset物件 = Connection物件.Execute(SQL語法, , adAsyncExecute)
Do Until Recordset物件.State = 1 ' Recordset 的開啟(執行)狀態
DoEvents
Loop
End Sub
Private Sub Recordset物件_FetchComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
' 當非同步動作將所有的資料錄取至(傳入)Recordset 便會觸發此事件。
End Sub
发表评论
-
pygrib basemap matlibplot环境安装
2017-07-14 10:47 0话不多说,直奔主题 我是再suse下离线安装的,所以搞得 ... -
spring 定时任务
2015-09-16 12:44 866这里使用的是Spring2.5,需要的jar包:spring ... -
三年博士干的事
2014-12-22 10:08 614见附件墙报 所谓的利用matlab,c++,php,基于 ... -
文本分类入门(番外篇)特征选择与特征权重计算的区别
2013-05-22 09:02 1934在文本分类的过程中 ... -
文本分类入门(十一)特征选择方法之信息增益
2013-05-22 09:03 1663前文提到过,除了开方检验(CHI)以外,信息增益(IG ... -
SVM入门(十)将SVM用于多类分类
2013-05-22 09:03 786从 SVM的那几张图可以看出来,SVM是一种典型的两类 ... -
SVM入门(九)松弛变量(续)
2013-05-22 09:03 657接下来要说的东西其实不是松弛变量本身,但由于是为了使用 ... -
SVM入门(八)松弛变量
2013-05-22 09:03 907现在我们已经把一个 ... -
SVM入门(七)为何需要核函数
2013-05-19 16:27 845生存?还是毁灭?——哈姆雷特 可分?还是不可分?——支持 ... -
SVM入门(六)线性分类器的求解——问题的转化,直观角度
2013-05-19 16:26 817让我再一次比较完整 ... -
SVM入门(五)线性分类器的求解——问题的描述Part2
2013-05-19 16:25 749从最一般的定义上说 ... -
SVM入门(四)线性分类器的求解——问题的描述Part1
2013-05-19 16:25 784上节说到我们有了一个线性分类函数,也有了判断解优劣的标准— ... -
SVM入门(一)至(三)Refresh
2013-05-19 16:24 750(一)SVM的八股简介 ... -
matlab文件及文件夹操作
2013-02-23 13:07 83461.matlab中读取一行多个 ... -
matlab 矩阵求和计算
2012-11-10 12:50 1726matlab中针对的数据大多是以矩阵形式来处理,求和函数是su ... -
vb动态数组
2012-07-19 21:28 909最近老板逼着弄GIS ,找到了mapobject是空间,使用过 ... -
关于 surfaceview 背景覆盖的问题
2012-02-16 15:18 2909本人开发过程中,发现出了黑色,不能设置其他颜色,如果设置了,就 ... -
关于 Failed to start monitoring 0A3AAA401902A029 错误
2012-02-12 10:07 2161在android开发的时候,在前面的文章中有说到连接真机开发, ... -
两个activity之间的Intent 传值
2012-02-11 23:32 1732看了很多,总结以下首先activity1和activity2之 ... -
VB中的图像用HScroll1,VScroll1 空间如何操作
2006-03-27 18:06 1081试过了,绝对正确的哦,呵呵,前提是图像要足够大的看不到,然后才 ...
相关推荐
执行命令:描述 ADO.NET Command 对象,并说明如何使用它来对数据源执行查询和命令。 使用 DataReader 检索数据:描述 ADO.NET DataReader 对象,并说明如何使用它从数据源返回结果流。 将存储过程用于命令:描述如何...
重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado,odbc和jdbc)的程序员,提供了帮助其迁移到ado.net许多易用的...
执行查询,包括参数化查询和非同步查询,并获取结果;创建DataSet对象以处理脱机数据,并研究常用场景;使用Microsoft SQL Server 2005中新的公共语言运行时特性和XML数据类型;为简单和复杂的更新生成逻辑和使用...
使用 ado.net 连接到数据源 执行命令 使用datareader检索数据 将存储过程用于命令 从数据库中获取单个值 从数据库中获取blob 值 执行数据库操作和修改数据 从sql server中以xml形式...
当多个线程更新相同的资源时,应使线程同步以避免冲突。 大多数访问VCL对象和更新窗体的方法必须从主VCL线程内部调用。 以下为创建和使用一个新线程的过程: (1)单击File|New|Thread菜单项,创建一个...
8.11 使用非常规的优化技术 232 8.11.1 性能调整的陷阱 232 8.11.2 诊断慢速查询 232 8.11.3 用查询设计网格以解决模糊字段的引用问题 233 8.12 使用分析器向导 233 8.12.1 表分析器向导 234 8.12.2 ...
8.11 使用非常规的优化技术 232 8.11.1 性能调整的陷阱 232 8.11.2 诊断慢速查询 232 8.11.3 用查询设计网格以解决模糊字段的引用问题 233 8.12 使用分析器向导 233 8.12.1 表分析器向导 234 8.12.2 性能分析...
180 如何使用事件对象同步进程? 181 如何在两个执行程序间进行数据通信? 182 如何使用工作线程? 183 如何正常终止线程? 184 如何异常终止线程? 185 如何获取线程退出码? 186 如何使用线程优先级? 187 如何使用用户...
13.6 使用强类型的DataSet 13.7 小结 <br/>第14章 使用ADO.NET创建搜索页面 <br/>14.1 使用SQL Server全文搜索 14.1.1 配置Full-Text Search Service 14.1.2 对数据库数据执行任意...
因数据库同步太耗网络资源,同步数据不多可采取产生SQL同步的方式,这个小程序,可以定时读取指定SQL文件连接数据库并执行的功能,配合ftp下载或推送就可实现同步。 采用ADO方式连接,config.ini文件可设置连接字符...
27.1 为何使用并行处理来执行多任务处理 550 27.2 在桌面应用程序中实现多任务处理 551 27.2.1 任务、线程和线程池 552 27.2.2 创建、运行和控制任务 553 27.2.3 使用task类实现并行处理 557 27.2.4 使用...
14.3.1 配置的和非配置的组件 447 14.3.2 COM+类别 447 14.4 创建一个ASP COM组件 447 14.4.1 组件的接口 449 14.4.2 创建组件 449 14.5 小结 457 第15章 COM+应用程序 458 15.1 微软组件服务(COM+) 458 ...
14.3.1 配置的和非配置的组件 447 14.3.2 COM+类别 447 14.4 创建一个ASP COM组件 447 14.4.1 组件的接口 449 14.4.2 创建组件 449 14.5 小结 457 第15章 COM+应用程序 458 15.1 微软组件服务(COM+) 458 ...
20.2 使用ActiveX控件开发ADO应用程序 404 20.2.1 创建工程 404 20.2.2 添加ADO的ActiveX控件 405 20.2.3 添加DataGrid控件 406 20.2.4 运行程序 407 20.3 使用ADO对象控件开发应用程序 407 20.3.1 引入ADO库文件 ...
6.使用ADO链接到ACCESS数据库 334 7.从EXCEL执行ACCESS任务 336 8.创建新ACCESS数据库 336 9.打开ACCESS窗体 338 10.打开ACCESS报表 343 11.运行ACCESS查询 345 12.运行选择查询 347 13.运行参数查询 348 14.调用...
6.使用ADO链接到ACCESS数据库 334 7.从EXCEL执行ACCESS任务 336 8.创建新ACCESS数据库 336 9.打开ACCESS窗体 338 10.打开ACCESS报表 343 11.运行ACCESS查询 345 12.运行选择查询 347 13.运行参数查询 348 14.调用...