2013-04-08 79 views
1

VB2010使用Access2007作爲後端。我正在創建一個DataSet併爲其添加多個DataTable並填充它們。大多數表格都有少量記錄,但可以有多達100萬條記錄。當我發出我的.Update命令時,是否有任何方法來獲取它所在的位置,以便我可以讓用戶知道它已完成x%更新?DataAdapter更新方法進度狀態

它工作的很好,但應用程序掛起,而進行更新。

RowsUpdated = daNewParts.Update(dsInventory, "NewParts") 
+0

允許批量處理和處理這對於每一批HTTP解僱了'RowUpdated'事件在數據表GetChanges:// msdn.microsoft.com/en-us/library/aadf8fk2​​.aspx – 2013-04-08 21:55:54

回答

2

的OleDbDataAdapter的有兩個事件稱爲RowUpdatedRowUpdating,你可以用它來接收當行已經更新通知或更新事件之前進行。

AddHandler daNewParts.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated) 

Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs) 
    ..... 
End Sub 

這僅僅是問題的第一部分,現在你需要知道多少行會被更新,當您開始操作。這可以得到調用正在更新

Dim count As Integer 
Dim changedData = dsInventory.Tables("NewParts").GetChanges() 
if changedData IsNot Nothing Then 
    count = changedData.Rows.Count 
End If 

現在你可以建立你的進度條

+0

ahh yes謝謝。我搜索了一段時間,但不知道要尋找什麼關鍵詞。與您的示例和MSDN http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.rowupdated%28v=vs.100%29.aspx我能夠實現。 – sinDizzy 2013-04-08 22:09:37