Q&A
初めて投稿します。よろしくお願いします。
●現象
Access2013。
メモリ不足です、というエラーが発生します。
構文が悪いのか、構文以外に問題がありそうなのか、判断して頂けないでしょうか。
●
Sub Sample()
Dim Cn As ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String
Dim i As Long
sub Sample()
Set Cn = Application.CurrentProject.Connection
Cn.Execute "UPDATE TMP SET F1='A'"
Cn.BeginTrans
Sql = "SELECT F1 AS N FROM TMP"
Rs.Open Sql, Cn, adOpenForwardOnly, adLockPessimistic
Do While Not Rs.EOF
i = i + 1
Rs("N").Value = CStr(i)
Rs.Update
If i Mod 1000 = 0 Then
Debug.Print i
Cn.CommitTrans
Cn.BeginTrans
End If
Rs.MoveNext
DoEvents
Loop
Rs.Close
Cn.CommitTrans
'ここでエラーになる。
Cn.Execute "UPDATE TMP SET F2='AA' WHERE F3='BB'"
Debug.Print "owata"
End Sub
●
テーブル TMPは、次のように定義。
CREATE TABLE(L INT,F1 NVARCHAR(255),F2 NVARCHAR(255),F3 NVARCHAR(255),・・・)
CREATE UNIQUE INDEX PK ON TMP (L) WITH PRIMARY
●
TMPのレコード数が15,649件でエラーになります。
それ以下だと、owata 迄、処理されます。
●
一時的なテーブルを作成し、CSVファイルのデータを取り込みます。
その一時的なテーブル(TMP)に、判定結果や、加工したデータを書き込みます。
場合によっては、所定の行を削除することもあります。
このような作業用テーブルを作成していたのですが、扱うデータ数も増えたのか、
今回、このようなエラーが発生するようになりました。
オブジェクトの開放や、レコードセットの作成など、見よう見まねですので、理屈はよく理解していません。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。