2011-03-01 24 views
0

我正在VBA(內部MS Access)中運行追加查詢,它看起來像下面的代碼。 當我在VBA中使用RecordsAffected方法來跟蹤已插入多少條記錄時,如果數量超過大約90.000條記錄或更高,它會導致錯誤? (它的某種stackoverflow錯誤)當數字超過大約90.000條記錄時,在VBA中使用RecordsAffected方法會導致錯誤?

有趣的是,當我不使用RecordsAffected方法,查詢工作得很好。當受影響的行數低於90.000時,它也可以正常工作。

什麼可能是錯的?這是VBA中的錯誤嗎?

Dim dbs As DAO.Database 
sql As String 
iCount As Integer 
Set dbs = CurrentDb 

sql = "INSERT INTO " & ReceiveTable_selected & " SELECT " & NavisionTable_selected & ".* " & _ 
        "FROM " & NavisionTable_selected & " " & _ 
        "WHERE ((([" & NavisionTable_selected & "].[Entry No_] ) >" & 
        Counter_selected & "))" 


dbs.Execute sql, dbFailOnError 
iCount = dbs.RecordsAffected 
+0

確切的錯誤消息和編號將有助於解決此問題。 – mwolfe02 2011-03-01 13:44:47

+0

我剛剛在一個大的插入上運行了一個測試,其中'RecordsAffected'報告了'2445045'記錄。所以它似乎不是VBA或DAO中的錯誤。我猜這裏還有別的事情要做。 – mwolfe02 2011-03-01 14:12:03

+0

好的謝謝你的意見。也許這可能是我從ODBC鏈接表追加? – MOLAP 2011-03-01 14:44:08

回答

3

變化Dim iCount As IntegerDim iCount As Long

從幫助文件:

整數變量存儲爲16位(2字節)之間的數字,在 值從-32,768至32,767。

和:

龍(長整型)的變量是 存儲爲帶符號的32位(4字節) 數爲在值從 -2147483648〜2,147,483,647。

+0

這一定是原因。但是,這個網站怎麼說整數可以保持更大的價值呢?我想我正在使用和舊版本。 http://msdn.microsoft.com/en-us/library/06bkb8w2.aspx >>保存帶符號的32位(4字節)整數,值範圍從-2,147,483,648到2,147,483,647。 – MOLAP 2011-03-01 15:00:02

+0

該網站是VB.Net的參考。當微軟創建Visual Basic .NET並將它簡單地稱爲「Visual Basic」時,微軟就將事情搞得一團糟。不幸的是,它與Visual Basic 6(VB6)和Visual Basic for Applications(VBA) - 它的準前輩 - 大不相同。命名方案對於新手和有經驗的程序員來說都是無窮無盡的混亂。 – mwolfe02 2011-03-01 15:22:35

+0

好的謝謝澄清事情。 – MOLAP 2011-03-02 08:42:14