みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもこちらの掲示板にはお世話になっております。
クライアント:FileMaker Pro 11(Win)
サーバー:FileMaker Server 11 Advanced(Win)
開発環境:FileMaker Pro 11 Advanced(Win)
現在、座席数設定のあるセミナー整理券発行システムを開発しています。
セミナーAは1000席、セミナーBは500席、セミナーCは250席というような形です。
発券はタッチパネルディスプレイとラベルプリンターを使用して参加者自身で、
聴講したいセミナーをタッチ操作で選んで、整理券を発行するという仕組みです。
端末は10台~20台程並べて、同時に使用します。
基本的なロジック等は完成しているのですが、
残り枚数が少なくなった時の同時発券回避の仕組みがどうしても作れません。
フィールド内容はざっくりですが、
[セミナーA_席数](数字・グローバル格納)
[セミナーA_発券フラグ](数字)
[セミナーA_発券フラグ_合計](集計:セミナーA発券フラグ合計)
以下、[セミナーB_席数][セミナーB_発券フラグ]・・・と続きます。
上記のような形で構成しており、整理券を1枚発券ごとに1レコードを作成、
[セミナーA_発券フラグ]フィールドに「1」を入れ、[セミナーA_発券フラグ_合計]フィールドで現在の発券枚数を合計しています。
発券時に[セミナーA_席数]と[セミナーA_発券フラグ_合計]フィールドの値を参照し、
発券枚数の合計が席数以上であれば、発券せず売り切れの案内を出しています。
この時なのですが、複数の端末がほぼ同時にアクセスをすると、席数以上の発券ができてしまいます。
例として、席数設定が1000で、現在の発件合計数が998の時に、3台の端末からアクセスがあると、
それぞれの端末が参照している[セミナーA_発券フラグ_合計]は998である為、
3台とも整理券が発行されてしまいます。この現象を回避する方法が思いつきません。
何か良い解決策があればご教授ください。
以上、宜しくお願いします。
Offline
現在の処理内容がわかりませんが、競合的な同時アクセスを行う処理は、結構難しいです。
発行処理を開始した時点で、もう一度残数を確認し、仮確定し、確認させる様な処理を加えるべきでは無いかと思いますが。
または、処理方法を変えて、まず、座席数分のレコードを作っておき、確定された物から何らかの済みフラグを立てていきます。それでしたら、残数を見ていく事も簡単ですし、重複発行の防止も簡単でしょう。
Offline
Shinさま
ご返信ありがとうございます。
やはり競合的な同時アクセスを行う処理は一筋縄ではいかなさそうですね。。
座席数分のレコードを作っておき、確定された物から何らかの済みフラグを立てていきます。
アドバイス頂きました、予めレコードを作成しておくという処理方法は思いつきませんでした。
一度、この方法で作成してみたいと思います!
この度はご教示頂きありがとうございました。
Offline
Pages: 1
[ Generated in 0.010 seconds, 12 queries executed - Memory usage: 554.13 KiB (Peak: 565.34 KiB) ]