Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1529 / 9994 ←次へ | 前へ→

【11757】レコードセットのメモリ解放のしかたについて
質問  えくせる  - 10/9/7(火) 22:30 -

引用なし
パスワード
   レコードセット変数に格納したキャッシュ値を解放するやり方について、ご回答頂けたらと思い、投稿します。

レコードセットの解放の方法としては、以下コード例(サンプル Subプロシージャ)の方法となります。
メモリ解放の確認を行うため、Windowsタスクマネージャのプロセスで、VBAから起動されているアプリケーションのメモリ容量を確認します。
しかし、解放したにも関わらず、キャッシュがメモリに蓄積されているままになり、後の全体のレスポンスに影響しています。
処理実行後、一気にメモリがふくれ上がり、物理メモリ領域を超えてしまい、フリーズしたかのように応答しません。
なにか良い「メモリ解放」手段を教えていただけませんでしょうか。

Sub サンプル()
Const cstrSQL As String = "SELECT文のSQL条件は絞り込み済み" 'フィールド指定で、*(アスタリスク)が原因かと思いましたが、結果同様。
Dim 変数名 As ADODB.Connection
Dim 変数名2 As ADODB.Recordset
Call 変数名.Open(接続式)
Set 変数名2 = 変数名.Execute(cstrSQL) 'ここで格納した時点で、メモリに蓄積される。
'*************
'なんらかの処理
'*************
Call 変数名2.Close '<=Recordset切断
Set 変数名2 = Nothing '<=Recordset解放・・・ここで、メモリ蓄積値が解放されないとダメ。
Call 変数名.Close '<=Connection切断
Set 変数名 = Nothing '<=Connection解放
End Sub

上記コードで、Close&Nothingは、単純にメモリ有効期間を無効にするだけで、メモリ解放までは行っていない気がします。
また、データベースがExcelである為、Access装備の最適化(JRO等)の機能は利用不可です。
(※実行中のレコードセット蓄積値を解放したいので、最適化は該当しない。)

▼環境
 ・OS: Windows xp
 ・CPU: Core 2 Duo
 ・メモリ: 1GB
 ・VBA: Excel 2007
 ・DB: Excel 2007

※実際、Excel VBA使用ですが、Excelに特化した質問ではないと思ったので、こちらで質問させていただきます。

以上、宜しくお願いします。

2,887 hits

【11757】レコードセットのメモリ解放のしかたについて えくせる 10/9/7(火) 22:30 質問[未読]
【11758】Re:レコードセットのメモリ解放のしかたに... 247b 10/9/7(火) 23:46 発言[未読]
【11759】Re:レコードセットのメモリ解放のしかたに... YU-TANG 10/9/8(水) 12:22 回答[未読]

1529 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free