過去の桐井戸端BBS (桐ver.8)
15544 一括処理で、開いているファイルを他の人が開こうとしたらメッセージを出したい とみた 2002/03/23-20:06
とみたといいます。
書き方がわからないことがあり投稿しました。
表をモード="専有"でひらいているときに他の人がそのファイルを開こうとしたら、
メッセージをだしたいのですが、桐独自のメッセージウィンドウがでて、
その後に一括処理で設定したウィンドウがでます。
以下のように書いてみました。
修正の方法を教えてください。


名札 マスタ
繰り返し
表 "商品マスタ",モード=専有,リトライ=する,終了状態=&確認
ケース開始
ケース(&確認=0)
メッセージボックス "他の人が使用中です。しばらくおまちください。",ボタン指定=6,制御文字展開=する
ケース(&確認=1)
ジャンプ 行番号=先頭
使用フォーム "メイン"
* 繰り返し
ジャンプ 行番号=先頭
フォーム形式編集
手続き実行 (&menu="検索"),検索
条件 (&menu="終了") 繰り返し中止
繰り返し終了
終了 表
ケース終了
分岐 メインメニューへ

15545 Re:表を専有で開けるかどうか調べる pokopon 2002/03/23-20:40
記事番号15544へのコメント
とみたさん こんにちは

>表をモード="専有"でひらいているときに他の人がそのファイルを開こうとしたら、
>メッセージをだしたいのですが、

「共有」で開いている時には、アクセスさせても良いんですね?

表の状態を
#ファイル使用( str , f )
で調べて判断すれば、

>一括処理で設定したウィンドウがでます。
はなくなるのではないですか?


#ファイル使用( str , f )

str ファイル名を表わす文字列を指定します。
f オープンモードを指定します。

値 戻り値
1 更新モードで開けるときは真(1)、開けないときは偽(0)。
2 参照モードで開けるときは真(1)、開けないときは偽(0)。


15546 Re:表を専有で開けるかどうか調べる hidetake 2002/03/23-21:29
記事番号15545へのコメント
>#ファイル使用( str , f )

この関数については重大な問題点があります。

それは他人だけが使っている表の場合は正しい値が返ってくるのですが、
自分自身で表引きしている場合どうなるか試してみて下さい。

結局開いてみて、その結果開けるか開けないかでしか、
(終了状態)でしか、その表が本当に使用できるかできないか判断するしかありません。

自分自身で扱っている表で、これから使用したい表が
表引き表に絶対になっていないと断定できる場合は
その限りでは無いでしょうけど・・・


備考:
それと、この関数は DOS版の桐とも多少仕様が変更になっています。 (;_;)

DOS版では表引き表で開いている表は、実際には読み書きで開くことも可能だけれど、
オプションの「1」を指定した返り値は更新モードでは開けない「0」で、
「1」を指定した返り値は参照モードで開けると「1」が返ってきたけど、
Windows 版になって、専有だろうが共有だろうが両方とも「0」が返ってくるようになっています! ヽ(;´o`)丿


15547 Re:ファイルの制御 KH 2002/03/23-22:04
記事番号15544へのコメント
とみたさん、はじめまして。
hidetakeさんがコメントしているので、出る幕はないでしょうが、
自分も結構、サーバーのデータを共有・専有で処理している場合の処理に苦労しましたので、参考になれば。

以下の場合の処理について、コメントさせていただきます。

 @ 既に共有で開いている場合、専有で開こうとした場合。
 A 既に専有で開いている場合、更に専有または共有で開こうとした場合。


>表 "商品マスタ",モード=専有,リトライ=する,終了状態=&確認

  ここは、リトライ=しないにしたほうが無難です。
  表が壊れた場合結構厄介ではないかと思います。
  かなりの時間延々リトライすると思います。

>ケース(&確認=0)
>メッセージボックス "他の人が使用中です。しばらくおまちください。",ボタン指
>定=6,制御文字展開=する

 ここは、条件(&確認<=0) 分岐 エラー処理 とし、「名札 エラー処理」の中で、処理をすれば良いと思います。
 試してはいませんが、エラー直後のケースコマンドは使った事がありませんのでなんともいえません。
 メッセージボックスのコメントは、「他の人が専有で開いているか、共有で開いていても、
 置換や併合などの排他処理をしています。」などと入れれば1つで楽できます。
 勿論、0,-1,-2のケースに分けて処理しても良いですが。


15548 Re:表を専有で開けるかどうか調べる pokopon 2002/03/23-23:06
記事番号15546へのコメント
hidetakeさん こんばんは

>>#ファイル使用( str , f )
>この関数については重大な問題点があります。

知りませんでした。というより、前に話題に出たような・・・・(^^ゞ 
また勉強になりました。

>自分自身で扱っている表で、これから使用したい表が
>表引き表に絶対になっていないと断定できる場合は
>その限りでは無いでしょうけど・・・

これが大前提でしょうね。今回はどうかはわかりませんが。

何でもそうですが、「実際にやってみて、駄目だったら終了状態を拾ってその後の処理を考える」が適当ですね。


15552 Re:ファイルの制御(訂正) KH 2002/03/24-07:10
記事番号15547へのコメント
 正確ではありませんでした、@に「または共有」を追加して訂正します。

> @ 既に共有で開いている場合、専有または共有で開こうとした場合。
> A 既に専有で開いている場合、更に専有または共有で開こうとした場合。

15564 やっと、できました。 とみた 2002/03/26-09:13
記事番号15544へのコメント
とみたです。アドバイスをくれた方々、ありがとうございました。やっとできました。

戻る