(現在 過去ログ39 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5912 / inTopicNo.1)  #ファイル使用について
  
□投稿者/ kirikiri -(2010/06/03(Thu) 10:58:44)
    OS:XP
    桐:ver9

    度々、お世話になります。

    下記のようにしてtest.tblが更新可能かどうか確認してから
    ファイルを開くという処理を作成しました。

      if(#ファイル使用("test.tbl",1)=1)
       メッセージボックス "確認","更新OK"
      else
       メッセージボックス "確認","更新NG"
      end

    この処理を「sample.cmd」というファイル名で記述します。

    そして、この「sample.cmd」と「test.tbl」をサーバー上に置き、
    AさんとBさんの2人で使用すると仮定します。

    問題は、Aさんが「sample.cmd」を実行するタイミングとBさんが「test.tbl」を
    専有で開くタイミングが同時だった場合に発生しました。

    同時だった場合、「test.tbl」が開いている(更新NG)にも関わらず、
    「#ファイル使用」コマンドで、“更新OK”と表示されてしまいました。

    おそらく、if文で「#ファイル使用」の確認をした直後にファイルが開かれ
    たのだと思います。この確率はかなり少ないのかと思いきや、桐の場合、
    かなり多く発生し、困っています。。。(テストでも確認済みです)

    他の方法でファイル使用を確認する方法や、完璧に確認する方法があれば、
    ご教授いただければと思います。

    よろしくお願い致します。

引用返信 [メール受信/OFF] 削除キー/
■5913 / inTopicNo.2)  Re[1]: #ファイル使用について
□投稿者/ 通りすがり -(2010/06/03(Thu) 11:09:11)
    >   if(#ファイル使用("test.tbl",1)=1)
    >    メッセージボックス "確認","更新OK"

    メッセージボックス出して待機してないで、とっととファイルを開いた方が良いかと
引用返信 [メール受信/OFF] 削除キー/
■5915 / inTopicNo.3)  Re[1]: #ファイル使用について
□投稿者/ 尾形 -(2010/06/03(Thu) 12:54:11)
    どうも、こんにちは

    表 "a.tbl",モード=専有,終了状態=&実行リターン
    if(&実行リターン=1)
       メッセージボックス "確認","更新OK"
      else

    こんな感じでないかと思いますが

引用返信 [メール受信/OFF] 削除キー/
■5917 / inTopicNo.4)  Re[1]: 楽観的排他
□投稿者/ ONnoji -(2010/06/04(Fri) 12:53:21)
    > おそらく、if文で「#ファイル使用」の確認をした直後にファイルが開かれ
    > たのだと思います。この確率はかなり少ないのかと思いきや、桐の場合、
    > かなり多く発生し、困っています。。。(テストでも確認済みです)

    あらかじめ用意周到に調べてからというアプローチは自然です。
    こういうのを悲観的排他(ペシミスティックロック)と言いますが…
    しかし、実際には誰かに先を越されている場合が発生しますね。

    というわけで、悲観的排他のアプローチは捨ててしまいましょう。

    そこで、楽観的排他(オプティミスティックロック)!!!!!!。
    乱暴なように思うかもしれませんが、
    いきなり、表を開いて結果を見るのが最善ですよ。

    追伸

    当方は、桐の共有は利用していないので、詳細についてはワカリマセン。
    あくまでも、一般論からのコメントです。あしからず。

引用返信 [メール受信/OFF] 削除キー/
■5918 / inTopicNo.5)  Re[1]: #ファイル使用について
□投稿者/ hidetake -(2010/06/04(Fri) 13:47:08)
    > #ファイル使用("test.tbl",1)=1

    桐の「#ファイル使用」関数は、ほかの人が開いているかどうかの前に
    自分自身が開いている表の中で表引きを使用していると、自分自身が
    参照で開いているテーブル(表引き表)に対しても「0」を返します。

    もちろん、そのような表は開けるので「#ファイル使用("test.tbl",1)」
    だけでは開けないとも言えません。

    http://www.fuku3.com/habata/kbbs/kakov8/15544.htm

    結局、開いてみて確かめるしかありません。


引用返信 [メール受信/OFF] 削除キー/
■5923 / inTopicNo.6)  一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ kirikiri -(2010/06/10(Thu) 20:59:51)
    通りすがりさん,尾形さん,ONnojiさん,hidetakeさん

    ご回答いただき有難うございます。
    お返事が遅くなってしまい、すみませんでした。
    色々と苦戦はしましたが、尾形さんの方法で解決しました。


    そして、度々で申し訳ありませんが、新たな問題が出てしまい、
    困っています。

    やりたい事は次のような内容です。
    ----------------------------------------------------------
    一括処理(.cmd)とイベント(.key)を専有で実行したい。
    ----------------------------------------------------------

    ■次のような状況です。
    ・複数人でフォームを同時に使用。
    ・フォームのボタンにイベント(手続き実行)、又は一括処理を割り当てる。
    ・誰かが手続き実行中は、他の人が実行できないようにしたい。

    以上です。
    もし、分かる方いたら、ご教授いただければと思います。
    よろしくお願い致します。

引用返信 [メール受信/OFF] 削除キー/
■5924 / inTopicNo.7)  Re[3]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ 通りすがり -(2010/06/11(Fri) 08:51:53)
    > ----------------------------------------------------------
    > 一括処理(.cmd)とイベント(.key)を専有で実行したい。
    > ----------------------------------------------------------

    その冒頭で、変数にでもフラグ立てるとか、ダミー.tbl専有で開くとか
引用返信 [メール受信/OFF] 削除キー/
■5925 / inTopicNo.8)  Re[4]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ kirikiri -(2010/06/14(Mon) 20:08:21)
    通りすがりさん
    いつもご回答頂きありがとうございます。
    大変助かりました。

    ちなみに、ダミーテーブルを使用した場合、
    誰が使用中か名前を表示させることはできないものでしょうか?

    色々考えてみましたが、無理でした。。
    テキストを外部に書き出しておき、それを読みに行くという感じであれば、
    出来そうですが、桐がハングしたりした時に困るので、他に手はないのかと
    いう状況です。

    kirikiri


引用返信 [メール受信/OFF] 削除キー/
■5926 / inTopicNo.9)  Re[5]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ うにん -(2010/06/15(Tue) 11:47:18)
    > ちなみに、ダミーテーブルを使用した場合、
    > 誰が使用中か名前を表示させることはできないものでしょうか?

    共有フォルダのファイルに書かれてるんだけど、取得する関数がないみたい。
    ファイルパレットで右クリックして情報を見ればわかります。

引用返信 [メール受信/OFF] 削除キー/
■5927 / inTopicNo.10)  Re[5]: 牛乳を飲む前に賞味期限を過ぎていないか調べるよりも
□投稿者/ ONnoji -(2010/06/15(Tue) 16:35:56)
    > テキストを外部に書き出しておき、それを読みに行くという感じであれば、
    > 出来そうですが、桐がハングしたりした時に困るので、他に手はないのかと
    > いう状況です。

    テキストで良いのではないでしょうか???。

    ターゲットの表( .tbl )を専有で開いた場合に、
    その直後にテキストを出力するようにしていけばOKじゃないですか??

    ただし、ハングするとテキストは残っていますが、
    常に上書きするように運用すれば問題ないでしょう。

    一方、ターゲットの表( .tbl )を専有で開くことに失敗したら、
    テキストの内容を調べればいいのでは???

    牛乳を飲む前に賞味期限を過ぎていないか調べるよりも、

    まず飲む牛乳!。結果はその後でというのがいいと思いますよ。

    当方は実際にこの方法を試したわけではありませんので、あしからず。

引用返信 [メール受信/OFF] 削除キー/
■5928 / inTopicNo.11)  Re[5]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ 通りすがり -(2010/06/16(Wed) 10:15:00)
    > 一括処理(.cmd)とイベント(.key)を専有で実行したい。
    tbl,viw,xvw は共有しますが、kev,cmd,wfm,rpt は各端末で持つから無意味 ってのは置いといて…

    > 誰が使用中か名前を表示させることはできないものでしょうか?
    桐やAccessはサーバーじゃないから、自分で管理テーブル作って管理、テキスト書き出しでも同様
    Accessでやったことあるけど

    ダミーテーブル専有じゃなく、管理テーブル共有更新で開いて、ロックして、#WSNAMEとか書き込んで、目的のkev処理して、ロック解除 かな
    桐ではやったこと無いです

    > ファイルパレットで右クリックして情報を見ればわかります。
    桐…、恐るべし
引用返信 [メール受信/OFF] 削除キー/
■5929 / inTopicNo.12)  Re[6]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ 尾形 -(2010/06/16(Wed) 11:12:20)
    > tbl,viw,xvw は共有しますが
    xvwを共有する意味ってあるのでしょうか
    wfmと同じ扱いと思っているのですが

引用返信 [メール受信/OFF] 削除キー/
■5930 / inTopicNo.13)  Re[7]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ 通りすがり -(2010/06/16(Wed) 12:03:36)
    そそ、おっしゃる通りだと思います、共有するのは表と結合表

    通りすがりの走り書きでご迷惑お掛けしております

引用返信 [メール受信/OFF] 削除キー/
■5931 / inTopicNo.14)  Re[8]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ うにん -(2010/06/16(Wed) 20:05:11)
    No5930に返信(通りすがりさんの記事)
    > そそ、おっしゃる通りだと思います、共有するのは表と結合表

    ですよね。。。
    だからそもそもダミーの表とか言わずとも、「実行する一括処理やイベントで
    使用する表」を専有すればいいだけの気がしますが。。。

引用返信 [メール受信/OFF] 削除キー/
■5985 / inTopicNo.15)  Re[9]: 一括処理(.cmd)とイベント(.key)を専有で実行したい。
□投稿者/ kirikiri -(2010/07/09(Fri) 10:33:51)
    通りすがりさん、うにんさん、ONnojiさん、尾形さん

    大変連絡が遅くなり申し訳在りませんでした。

    その後、色々試してみましたが、皆様の言うように、テキストや管理テーブルで使用中のユーザー名を管理しようと思います。


    ご協力いただき有難う御座いました。

解決済み!
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -