一括表示

THW_update 後の処理 投稿者:JA2BQX 太田 

VB2010 で Hamlog が起動時に cmmd= 15 でデータ入力ウインドウに文字列を転送し、Save もしています。

Hamlog が起動したままで転送・保存済の Hamlog.hdb の最後のレコードの中身を取得し
code , name , qth が空白なら 文字列をセットして THW_update 処理をしています。

この時に 「No15 インデックスの再構築が必要です。Hamlog.dx1 」が出ます。
この処理を VB2010 で行うにはどうすれば良いでしょうか?

このメッセージには [ OK ] を2回クリックすると処理は終了します。

さらに Hamlog メニューの [ 再読み込み ] をクリックすると更新内容が表示されます。

この処理を VB2010 で行うにはどうすれば良いでしょうか?

[ 再読み込み ] のマウスカーソルの位置を取得してクリックをシュミレーション以外には無いでしょうか?

2017/10/10(Tue) 18:26:24  [No.819]


Re: THW_update 後の処理 投稿者:JG1MOU浜田 

> Hamlog が起動したままで転送・保存済の Hamlog.hdb の最後のレコードの中身を取得し
> code , name , qth が空白なら 文字列をセットして THW_update 処理をしています。
>
> この時に 「No15 インデックスの再構築が必要です。Hamlog.dx1 」が出ます。
> この処理を VB2010 で行うにはどうすれば良いでしょうか?

THW_update()呼び出し前に、修正前のレコードを読み出しておき、それ
を比較用バッファにコピーします。
読み込んだバッファの内容のうち、修正したい構造体のフィールドに
修正データをコピーして、THW_update()を呼び出します。

> さらに Hamlog メニューの [ 再読み込み ] をクリックすると更新内容が表示されます。
>
> この処理を VB2010 で行うにはどうすれば良いでしょうか?

コマンド27ではいかがですか。
27 = QSOデータをクローズさせます。
この間に、QSOデータの読み書きができます。
処理が終わったら、直ちに28を実行してください。
28 = QSOデータをオープンさせます。

でも、再描画させていないから表示は変わらないはずですね。

2017/10/10(Tue) 21:44:17  [No.820]


Re: THW_update 後の処理 投稿者:JA2BQX 太田 

浜田さん、こんばんは。
ありがとうございます。

> THW_update()呼び出し前に、修正前のレコードを読み出しておき、それ
> を比較用バッファにコピーします。
> 読み込んだバッファの内容のうち、修正したい構造体のフィールドに
> 修正データをコピーして、THW_update()を呼び出します。

はい、その様にしているつもりなのですが。明日また確認してみます。

> コマンド27ではいかがですか。
> 27 = QSOデータをクローズさせます。
> この間に、QSOデータの読み書きができます。
> 処理が終わったら、直ちに28を実行してください。
> 28 = QSOデータをオープンさせます。

「QSOデータをクローズさせます。」...とは実際にはどうなるのかな。
明日試しますが、メインウインドウが消える?

> でも、再描画させていないから表示は変わらないはずですね。

これを表示が変わるようにしたいのですが。
Hamlog を終了、再起動させようかとも思っています。
何秒位で終了、再起動が出来るか計測もしてみます。
処理に掛かる秒数が少なくてインデックスの再構築のMSGが出なくて
表示が変わるようならFBなのですが。

再起動すれば起動にインデックスの再構築は行われるでしょうし表示が変わるはずですね。
処理に掛かる秒数の問題か....。

2017/10/10(Tue) 22:12:54  [No.821]


Re: THW_update 後の処理 投稿者:JA2BQX 太田 

こんにちは。

27 = QSOデータをクローズ
インデックスをクローズ

THW_update() にて Code , Name , QTH を更新しています。

MakeIndex("D:\Hamlog\Hamlog.hdb", "CODE+NAME+QTH", "D:\Hamlog\Hamlog.dx1")
28 = QSOデータをオープン

...をしましたがやはり インデックスの再構築のMSGが2回出ます。
Name と QTH の分ですね。 2回 「OK」をクリックすると
メインウインドウは更新したデータが表示されます。

インデックスの再構築のMSGを出さないようにする手立てはあるでしょうか?

2017/10/11(Wed) 06:46:21  [No.822]


Re: THW_update 後の処理 投稿者:JA2BQX 太田 

こんばんは。
お騒がせしました。

比較用バッファにコピーなどでセットする順番が間違えているのがありました。

cmmd = 27 と cmmd = 28 も使い、インデックスの再構築のMSGも出ずに
更新した内容がメインウインドウに表示されました。

ありがとうございました。

2017/10/11(Wed) 15:49:50  [No.823]


Re: THW_update 後の処理 投稿者:JG1MOU浜田 

> 27 = QSOデータをクローズ
> インデックスをクローズ
>
> THW_update() にて Code , Name , QTH を更新しています。
>
> MakeIndex("D:\Hamlog\Hamlog.hdb", "CODE+NAME+QTH", "D:\Hamlog\Hamlog.dx1")
> 28 = QSOデータをオープン

MakeIndex()を実行する必要は無いはずですよ。

THW_update()の内部でそれに相当することをやってますので。

2017/10/14(Sat) 07:41:42  [No.824]


Re: THW_update 後の処理 投稿者:JA2BQX 太田 

ありがとうございます。

> MakeIndex()を実行する必要は無いはずですよ。
> THW_update()の内部でそれに相当することをやってますので。

今、 10m FT8 で SA が開けているので後程ソースの修正をしておきます。

2017/10/14(Sat) 09:35:54  [No.825]