過去の桐井戸端BBS (桐ver.9) |
23814 | LAN上で編集対象表のないフォームが使用中かどうかを調べるにはどうしたらいいのでしょうか | 尾形 | 2003/12/10-07:41 |
よろしくお願いします 編集対象表のない"メニュー給与計算.WFM" これがLAN上で他のユーザが開いているか どうかを調べたいのですがよい方法はないでしょうか? 更新処理をするのに給与計算用のメニューを開いている者がいないか? を調べるのが目的です よろしくお願いします | |||
23815 | Re:フォームが使用中かを調べる方法 | アックン | 2003/12/10-08:13 |
記事番号23814へのコメント 尾形さん、こんにちは。 "メニュー給与計算.WFM"のイベントを下記のようにしておき、 他のフォームのイベントから、探したいパスに行って、 cond( &menuwin ) ・・ または、 if( &menuwin ) とすれば、開かれているかどうかわかると思います。 名札 メイン var 固有 , 整数 { &メニュー給与計算} * proc フォーム::フォーム開始(長整数 &表番号) &メニュー給与計算= &hwindow end proc フォーム::フォーム終了() &メニュー給与計算= "" end | |||
23816 | Re:フォームが使用中かを調べる方法 | アックン | 2003/12/10-08:17 |
記事番号23815へのコメント 尾形さん> 訂正です。<(^^) cond( &メニュー給与計算 ) ・・ または、 if( &メニュー給与計算 ) とすれば、開かれているかどうかわかると思います。 | |||
23818 | Re:フォームが使用中かを調べる方法 | 尾形 | 2003/12/10-08:20 |
記事番号23816へのコメント どうも これって他人(他のパソコン)が開いているのも分かりますか? | |||
23820 | Re:フォームが使用中かを調べる方法 | アックン | 2003/12/10-08:37 |
記事番号23818へのコメント 尾形さん> そういえば、他人の変数は見えないですね。 タイプを共通にしても見えないはずだし。 なにか他に簡単にできる方法があるんじゃないかと思うんですが。 | |||
23823 | Re:フォームが使用中かを調べる方法 | うにん | 2003/12/10-09:27 |
記事番号23820へのコメント >なにか他に簡単にできる方法があるんじゃないかと思うんですが。 #ファイル使用("some.wfm", 1) でいいかと思ったら、tblやkevは「他ユーザ使用中」になるのにフォームは 使用中でも定義モードで開けてしまいました。 対象表を作ってそっちを調べるのが簡単そう。 | |||
23824 | Re:フォームが使用中かを調べる方法 | うにん | 2003/12/10-09:33 |
記事番号23823へのコメント >#ファイル使用("some.wfm", 1) >でいいかと思ったら、tblやkevは「他ユーザ使用中」になるのにフォームは >使用中でも定義モードで開けてしまいました。 あれ〜?先に定義モードで開いてる人がいると、#ファイル使用("some.wfm", 1)=0 なのはいいとして、#ファイル使用("some.wfm", 2)=1なのに開けない。 ちょっと変。 (ちなみにネットワークではなく同じパソコンで桐2つ起動してテスト) | |||
23827 | Re:フォームが使用中かを調べる方法 | 原山 正洋 | 2003/12/10-10:36 |
記事番号23815へのコメント アックンこんにちは。 引用の都合でここにぶら下げさせてもらいます。 >proc フォーム::フォーム開始(長整数 &表番号) > &メニュー給与計算= &hwindow >end >proc フォーム::フォーム終了() > &メニュー給与計算= "" >end これを以下のようにしたらどうでしょう? proc フォーム::フォーム開始(長整数 &表番号) copy "a.org","a.tbl" end proc フォーム::フォーム終了() rm "a.tbl" end ネットワークの経験がないので、あとは推測です。 フォームが同時にいくつか立ち上がるのであれば、 ,終了状態 = &OK を付加して返り値をチェックするなり フォーム開始で"a.tbl"を開き、 フォーム終了でこれを閉じる などを組み合わせれば可能なのでは? 後は、この表の存在チェックですね。 | |||
23828 | Re:フォームが使用中かを調べる方法 | 通りすがり人 | 2003/12/10-10:51 |
記事番号23814へのコメント 私なら・・・ということで。 >編集対照表のない"メニュー給与計算.WFM" >これがLAN上で他のユーザが開いているか > >更新処理をするのに給与計算用のメニューを >開いている者がいないか?を調べるのが目的 更新処理そのものは、このフォームに対してではなく、別にある「表」に対してだと思います。 ならば、直接この表を調べては? 誰が開いているかまでは分かりませんが(サーバーでなければ)、利用状況はわかると思います。 当方では、このメニューのフォームで、#WSNAME 関数にてローカルユーザーの名前を LAN上の共有フォルダにTXTとして記録(追加処理)、すなわち利用者LOGを取っております。 管理者は、このファイルを直接見て「誰が利用しているか」を判断しています。 利用目的が違いますが、当方ではそういった管理方法もしているということで・・・。 | |||
23829 | Re:フォームが使用中かを調べる方法 | 通りすがり人 | 2003/12/10-10:56 |
記事番号23823へのコメント うにんさん いつも発想がきれますね・・・。(^^ゞ >#ファイル使用("some.wfm", 1) >でいいかと思ったら、tblやkevは「他ユーザ使用中」になるのにフォームは >使用中でも定義モードで開けてしまいました。 なら、KEVを調べれば? なければ、ダミーでKEVを抱え込むとか。 空っぽのKEVを定義してですけど。 | |||
23831 | Re:フォームが使用中かを調べる方法 | 尾形 | 2003/12/10-12:00 |
記事番号23828へのコメント 皆様どうもありがとうございます >更新処理そのものは、このフォームに対してではなく、別にある「表」に対してだ >と思います。ならば、直接この表を調べては? 月次更新のような処理ですので多数の表に対して 更新をかけるので給与計算処理自体をロックしたいとおもった次第です 別途表で管理するような方法でやってみます | |||
23833 | Re:フォームが使用中かを調べる方法 | うにん | 2003/12/10-12:47 |
記事番号23831へのコメント >月次更新のような処理ですので多数の表に対して >更新をかけるので給与計算処理自体をロックしたい >とおもった次第です それなら必要な表を全部ロックしてから更新処理に入るのが普通なのでは? (やったことないのでできるかどうかわかりませんが。) 途中で必要な表を誰かが開いちゃったりしたら困るでしょう。 | |||
23835 | Re:フォームが使用中かを調べる方法 | 原山 正洋 | 2003/12/10-13:40 |
記事番号23831へのコメント 尾形さん、こんにちは。 >編集対照表のない"メニュー給与計算.WFM" >これがLAN上で他のユーザが開いているか >どうかを調べたいのですがよい方法はないでしょうか? >月次更新のような処理ですので多数の表に対して >更新をかけるので給与計算処理自体をロックしたい つまりメニュー給与計算.WFMが開いていない限り、 多数の表は、一つも開いていないと解釈します。 結構回りくどい方法になりますが、 メンテ・ユーザー側それぞれ別メニューを作成し、 ここからメニュー給与計算.WFMを呼び出します。 その際に メンテ側 1.メニュー給与計算.kev(仮名)が開いているか検査 2.閉じている 3.mkdir "lock_dir" 4.もう一度1.の検査をする 5.やはり閉じていれば、更新作業を開始する。 6.更新終了後 lock_dir を削除 ユーザー側 1.lock_dir があれば、更新中メッセージを出して作業中止 フォームを呼び出す前に上記手順を踏みます。 4.はめったにないことですが、 メンテ・ユーザー側のタイミングがぴったり合ってしまって、 lock_dir があるのにユーザーがメニュー給与計算.WFMを 開いているという事態に備えてです。 当然3と4の間には適当な遅延時間が必要です もっといい方法があるのでしょうけども・・・ ご参考になれば | |||
23836 | Re:フォームが使用中かを調べる方法 | 通りすがり人 | 2003/12/10-14:15 |
記事番号23833へのコメント >それなら必要な表を全部ロックしてから 管理者側で、最初から専有で処理する表全部を開いておくのって? 表を開いた人勝ち!ですから。 何個の表があるかは分かりませんが・・・・。 |