「巨大なデータを扱っていて、途中でコケた場合、また最初から回さなければならない。途中段階で一時的にデータを保存したいなぁ」というときに役立つ便利関数です。
使い方
/*---------------*/
重たい処理
いろいろなデータ処理
いろいろなデータ処理
call Benri.MyStore('テーブル名');
/*---------------*/
call Benri.MyLoad('テーブル名');
といった感じで使います。
まずそのまま回すと、[c:\temp]にQVDとしてデータが保存されます。2回目以降は、1つ目の「/*————-*/」の右端を消してあげれば、MyLoadの直前までコメントアウトされ、重たい処理をすっ飛ばして一時保管されたデータが読み込まれます。
サンプルプログラム
最初はそのまま回します。すると、testdataがc:\temp\QVW名_testdata.qvdとして保存されます。
2回目以降は、「★」部分の右端「/」を削除して回します。すると、MyLoadまでの処理がすっ飛ばされて、MyLoadによってtestdataが読み込まれます。
ただし、すっ飛ばしたい部分までは別のコメントアウト「/*—-*/」は使えなくなります。すっ飛ばしたい部分内にコメントを残す場合は、「//」を使ってください。
//便利関数の読み込み
$(Include=C:\temp\Benri.txt);
/*------------*/ //←★次に回すときは、右端の「/」を消して回す
//テストデータ
testdata:
load *
Inline [
prod, ym , a1, a2
魚, 201901, 10, 10
魚, 201902, 20,
魚, 201903, , 30
]
;
//使用例
call Benri.MyStore('testdata');
/*-----------*/
call Benri.MyLoad ('testdata');
仕様
以下のような内容です。超絶シンプル♪
sub Benri.MyStore(__tbl)
let __aaa = Left(DocumentName(), len(DocumentName())-4) ;
store $(__tbl) into [c:\temp\$(__aaa)_$(__tbl).qvd](qvd) ;
drop Table $(__tbl) ;
set __aaa=;
end sub
sub Benri.MyLoad (__tbl)
let __aaa = Left(DocumentName(), len(DocumentName())-4) ;
$(__tbl): NoConcatenate
load * from [c:\temp\$(__aaa)_$(__tbl).qvd](qvd)
;
set __aaa=;
end sub