• ベストアンサー

排他制御。

kawabataの回答

  • ベストアンサー
  • kawabata
  • ベストアンサー率67% (21/31)
回答No.1

具体的では、ありませんが、次のような方法が 考えられます。 1.モーダルダイアログを利用する  ブラウザ側でスクリプトを記述することになります。  1ページ目をモーダルダイアログの中に  開きます。  開くときに、ロックを設定します。  あとは、データを更新して、ダイアログを閉じる  時点で、ロックを解除します。  ウィンドウを新規に開くことにより、戻るボタンや  リロードによるトラブルを防げるかと思います。  モーダルダイアログについては、  http://www.microsoft.com/japan/developer/workshop/author/dhtml/dude/dude09252000.asp 2. ロック解除は、一定時間後に行う。  2ページ目が開いて、一定時間後に  自動的にロック解除するようにします。  もし、3ページ目に、正しく移動できれば、  3ページ目でロック解除します。  戻るボタン、リロード対策については、  page1.asp?s=100 page2.asp?s=101 page3.asp?s=102 のように現在のユーザーがどのシーケンス番号に  あるかを管理し、シーケンス番号が戻ると  エラーを出す方法があります。  page2 でのタイムアウト時間が、不定期に  長くなる可能性があるのであれば、  画面上に明示的にタイムアウトを延長するボタンを  配置するか、ブラウザスクリプトで、タイムアウト  しそうになったら、特定のページを自動的に  呼び出して、タイムアウトを更新する処理も  考えられます。  なお、ユーザーによっては、画面を開いたまま、  会議にはいったり、出張に出てしまうといった  ことも、考えられなくはないので、注意が必要です。 スケーラビリティから考えると、排他制御は できるだけしないほうがいいと思いますが、 参考まで。

yoshioz
質問者

お礼

(D)HTMLでダイアログが出せるとは知りませんでした。 なかなかこれまでの業務をイントラに置き換えていくのは 難しいみたいですね。 お答えいただいた内容をふまえながら なにかしら仕組みを考えていきたいと思います。

関連するQ&A

  • 排他制御の方法

    現在、PWS+ASP+ACCESSを使用し開発を行っていますが排他制御で悩んでいます。 ASPは、ステートレスなセッションでの制御しか出来ないため、ページを表示後のデータの変更はスタンドアロンでの更新のような形になってしまうと思います。 以下のような方法で行っている実例を見たことがありますが、少なからず問題も抱えていると思います。 ・レコード毎に排他フラグを保持する ~ 処理がアベンドした場合にフラグが残る(一定時間後に解除という方法もありますが) ・レコード毎に更新時間を持ち、読込時の更新時間と更新時の更新時間とを比較し更新されていない時だけ更新をかける ~ 後に更新をかけようとした変更が無駄になる 上記の方法以外で、排他制御を実現させる良い方法はないのでしょうか。他の方法で実現しているときは、その方法を教えて頂けませんでしょうか。 ※PWS→IIS、ACCESS→SQLServerに変更する可能性はあります。 (セッションオブジェクト・アプリケーションオブジェクト等を使用しての実現方法など) 宜しくお願いします。

  • 「WINRAR」の排他制御

    PCのアーカイブソフト「WINRAR」でRAR書庫内のファイル内容を更新して上書き保管しても書庫内のファイル更新日は変わらず、再度開き確認しても更新が反映(保存)されていません。 書庫を閉じる段になるとエラーメッセージ『これらのファイルは外部の編集アプリケーションを閉じてから圧縮できます』が出ます。 「書庫に戻る」か「(更新を破棄して)書庫を閉じる」の二択しかなく、書庫に戻っても更新されていないファイルが残っているだけでです。 そこで再度そのファイルを開いて更新しても同じことの繰り返しで更新を反映させることは出来ず結局、更新破棄の一択になります。 ファイル更新したタスク(アプリ)は既に終了しているのに排他制御されています。 「(更新を破棄して)書庫を閉じる」を選択するまでは、【一時ファイル用フォルダー】に、更新が反映されたファイルが残っていますが、書庫に保存されずこのような作業ファイルがどんどん増殖していくだけで結局、書庫に保管することは出来ず書庫を閉じた際にこれらは消去されます。 妙な排他ロックが掛かるファイルは、エクセル、テキスト、PDFなど形式・アプリを問わず発生します。 同じファイルでも排他ロックが掛かったり、掛からなかったり再現の規則性は不明です。 書庫を一旦閉じて再度開いてやり直しても、妙な排他ロックの再現規則性は不明です。 WINRARはVersion6.21、Windowsは10の22H2(適用可能な更新は全て当ててあります) 現在は、書庫内データを大幅更新する際は、閉じる前に更新部分を別にコピペしておき、妙な排他ロックの際には気長にコピペ先から元書庫への更新作業を繰り返して、無事に更新が反映されるまで根気よく使っています。 原因、対策を教えてください。

  • ASP.NETでのファイル排他制御について

    ASP.NETでのファイル排他制御に関しての質問です。 あるアプリケーションでローカルリソースファイルおよびXMLファイルの更新等を行います。 アプリケーションは複数の起動が可能です。 ローカルリソースファイルおよびXMLファイルの排他制御は可能でしょうか? 可能な場合、ファイルおよびレコード単位で可能でしょうか? この辺のプログラミングについてご教授お願い致します。

  • 排他制御について

    質問します。 VB.NETとSQLServer2000を使用して受発注処理を作成したいのですが、排他制御について今悩んでいます。 レコードロックの動作についてなのですが、Aさんが「A01」のデータをレコードロックでデータを画面に表示している場合に、Bさんも(別PCにて)同様にレコードロックで「A01」のデータを表示することは可能なのでしょうか?(取得できるのか) 何方かご教授お願い致します。

  • Perl-CGI で排他制御はどうすればよいのか?

    このカテゴリでは始めて質問します。 今 Perl-CGI でアクセス・カウンタを自作しようとしています。 今まではレンタルしたカウンタを使っていましたが複数のページで 個別に使えないため自作することを決めました。 そこで質問です。 アクセス・カウンタで重要な排他制御はどのように行いますか? 今ネット検索で見つけたものがディレクトリを作成しておく方法です。 これ以外に何か上手いやり方はありますか? Perl は入門したばかりです。 どうぞよろしくお願いいたします。 排他制御で気をつけるべき点がありましたら一緒に教えて下さい。 それでは回答をお待ちしています。

    • ベストアンサー
    • Perl
  • javascriptで排他制御

    いつもお世話になっております。 現在、AJAXを使って、10秒に一度サーバのデータを受けて表示するというものを作成しています。 その際、キープアライブという形で別の通信をしているのですが、運悪くその二つの応答が重なってしまうと、データ表示がおかしくなってしまいます。 これではまずいので、一つの通信が終わるまでもう一つの通信を始める時間になっても待っているようにする、排他制御がしたいのですが、javascriptで実現可能なのでしょうか? C++でいうとcriticalsectionのようなものがほしいですが見当たらなかったので、ご存知の方がおられましたらご教授願います。

  • データベースに書き込むときの排他処理

    ASP3.0 IIS5.0 ASP初心者です。初心者の素朴な疑問なんですが、 ASPで、例えばWebページから入力された情報を、 Accessなどのデータベースに書き込むとき、 排他処理って必要ですよね? 一般的にどうやるのでしょうか? Application変数を使うのでしょうか? データベース自体に排他制御する機能があるのですか? よろしくお願いします。

  • トリガに排他制御をかけたいのですが

    トリガに排他制御をかけたいのですが Oracleのトリガで、 トリガ内の処理に対して排他制御をおこないたいのですが、 どのように設定すればよいのでしょうか? トリガの内容は以下となります。 CREATE OR REPLACE TRIGGER TRI_TEST after update of (トリガの実行条件その1) on ORG_TBL FOR EACH ROW begin if (トリガの実行条件その2) THEN begin insert(実行される処理その1) EXCEPTION update(実行される処理その2) end; end if; end; / 上記の条件において、 「実行される処理その1」 「実行される処理その2」 を行っている最中に他からのアクセスをブロックをさせたく思っております。 本件の理由は 他からのアクセスで行われる処理が 「select(トリガによってデータが投入されてるテーブル)」 「truncate(トリガによってデータが投入されてるテーブル)」 を連続して行う処理のため、 排他を実行しなかった場合、 他からのアクセスの「select」と「truncate」の処理間に トリガによってレコードがinsertされた際に、 そのレコードがselectされなくなることを危惧しているためです。

  • Accessの排他制御をどのように行うべきか

    いつもお世話になっております。 Windows2000 Access2002、またはAccess2000にて、 複数のPCで、サーバにおいてあるmdbファイルを使用するシステムを開発する場合、 (例えば、スタンドアロンで使用していたシステムを複数のPCで使用することになったと仮定します。 また予算の都合上、Oracle、SQL Serverなどは使えないものとし、各PCにAccessがインストールされます。 ) 排他制御を行うために、Accessで排他モードで開いて使用するという対応というのは、問題ないのでしょうか。 データが破損する可能性があるということをよく耳にするのですが、 過去に上記の対応を行われた方がいらっしゃいましたら、その後の運用で問題は発生しなかったか(ファイルが壊れる事はないのか)、 過去に壊れた事象をお持ちの方がいらっしゃいましたら、どのように対応されたのか、 別の対応方法をとられていらっしゃる方は、その対応方法を ご教授いただけないでしょうか。 プログラムでデータの破損を退避できるのであれば、上の対応と併せて開発できそうな気はするのですが、、 ご回答、よろしくお願いいたします。

  • トグルボタンの排他制御でご教授ください。

    いつもお世話になっております。 エクセル2003のマクロVBAで、トグルボタンの排他制御を行っております。 ひとつのフレーム上の二つのトグルボタンの制御は、MSのサンプルソースを参考に以下のようなソースを作成して、制御できております。 教えて頂きたい内容は、同じようにひとつのフレーム上に、二つのトグルボタンを追加して、排他制御を行いたいたく検討しています、できれば、以下の ExclusiveToggleButtons() を使いたいと思っていますが、for ループのフレーム名が固定です。 フレーム名を可変にすれば、共用できるのではないかと思っていますが、なかなかうまくいきません、よい方法がありましたら、ご教授願います。 --- 標準モジュール ------------ start --- Sub ExclusiveToggleButtons() Dim my_toggle As Control ' Loop through all the ToggleButtons on Frame1. For Each my_toggle In myStartForm.my_MonthChoice_Frame.Controls ' If Name of ToggleButton matches name of ToggleButton ' that was clicked... If my_toggle.Name = my_Clicked_But Then '...select the button. my_toggle.Value = True Else '...otherwise clear the selection of the button. my_toggle.Value = False End If Next --- 標準モジュール ------------ end ---