掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アクセスのインストール無しでMDBの操作はできますか (ID:7697)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
簡素化したソースは以下のとおりです。 使用メモリ状態をグラフ表示する監視ソフトを実行させて確認したところ、 BeginTransメソッドを使用すると傾斜角25度位で みるみるメモリが消費されていくのが判りました。 BeginTransと止めて実行したところ、メモリ消費スピードは抑えられたものの 40900件終了した時点で、約40MB位のメモリを消費しています。(Cerelon400,RAM256) 登録が全部終わり、ツール画面はまだ表示されたままの状態で、空きメモリは徐々に元に戻りました。 なにか命令を追加すれば実行時のメモリの消費を抑えられるでしょうか。 var UsFp : textfile; oleEG : variant; oleWS : variant; oleDB : variant; oleRS : variant; strSQL : string; begin try oleEG := CreateOleObject('DAO.DBEngine.35'); oleWS := oleEG.Workspaces[0]; oleDB := oleWS.OpenDatabase( 'ACC97.MDB', False, False); oleDB.BeginTrans; while not eof(UsFp) do // 固定長テキストの読み込みループ begin Readln(UsFp,…); Application.ProcessMessages; strSQL := 'SELECT CODE FROM MASTERTABLE WHERE …'; oleRS := oleDB.OpenRecordset(strSQL); if oleRS.EOF then strSQL := 'INSERT INTO MASTERTABLE VALUES ( ……' else strSQL := 'UPDATE MASTERTABLE SET ……'; oleDB.Execute(strSQL,128); // 128 = dbFailOnError エラー発生時は自動的にロールバック end; oleDB.CommitTrans; Result := True; except on E : Exception do begin ShowMessage(E.Message + CRCR +'【' + E.ClassName + '】' + CRCR + '【' + strSQL + '】' + CRCR + 'エラーが発生したのでデータの更新を元に戻します。'); oleDB.Rollback; Result := false; end; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.