<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />バージョン 7.0.2: 2 GB メモリ、Windows 7
for ループがあります (今のところ 2 回ループします)。 for ループ内で、データベース接続を開き、クエリを実行して、返されたテーブルを取得します。 返されたテーブルは、約 10 列、170 万行です。 次に、テーブルを保存して閉じ、次のテーブルに進みます。 問題は、メモリが最初のテーブルから解放されないことです。そのため、次のループ クエリからレコードを取得すると、メモリ例外が発生します。 テーブルとそのメモリを for ループ内から永久に閉じる方法はありますか? ありがとうクリス。
以下のコード スニペットを参照してください。
私のリスト=言葉(マンガー( p [ 「ウエハース」 ] 、ぜ、 "、" 、 " " ))) ; //ウェーハ番号をリストに入れる
N = Nアイテム(私のリスト) ; // リスト内のウェーハの数をカウントします
為に(私= 1 、私<= N 、私++、
waf_id =私のリスト[私] ;
waf_table =私のリスト[私] ;
もしも(長さ( waf_id ) > 0 、 waf_id = "('" || waf_id || "')" ) ;
ls_sql = "選択する * " ;
ls_sql = ls_sql || " WDBP.dbo.SF_QST から " ;
ls_sql = ls_sql || " WHERE WAFER_ID IN " || waf_id ;
見せる( ls_sql ) ; // ログに SQL ステートメントを表示します
OpenDatabase ( 「DSN=WDBP;UID=WDFREP;PWD=wdfrep;」 、 ls_sql 、 waf_table ) ; // データベースに問い合わせる
dt =データ表( waf_table ) ;
ファイル名= waf_table||".jmp";
見せる(ファイル名);
近い(dt, 保存 (ファイル名));
) ;
わかった。 この問題は、ループの最後にある「close(dt, save(filename))」の後に「wait(5)」コマンドを配置することで解決されます。 スクリプトがさらに処理を続ける前に、JMP はファイルの保存を完了していませんでした。
いくつかのテストを実行してこれを見つけましたが、運が悪かった..