0

以下のコードのような追加クエリを VBA (MS Access 内) で実行しています。挿入されたレコード数を追跡するために VBA で RecordsAffected-method を使用すると、数が約 90.000 レコード以上になるとエラーが発生しますか? (ある種のスタックオーバーフローエラーが表示されます)

面白いのは、RecordsAffected-method を使用しない場合、クエリが正常に機能することです。また、影響を受ける行数が 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
4

1 に答える 1

3

Dim iCount As Integerに変更Dim iCount As Long

ヘルプ ファイルから:

整数変数は、値が -32,768 ~ 32,767 の範囲の 16 ビット (2 バイト) の数値として格納されます。

と:

long (long integer) 変数は、値が -2,147,483,648 ~ 2,147,483,647 の範囲の符号付き 32 ビット (4 バイト) 数値として格納されます。

于 2011-03-01T14:57:53.110 に答える