matsubara@crest-inc.co.jp

伝票№採番の重複について

Discussion created by matsubara@crest-inc.co.jp on Dec 6, 2015

お世話になります。

標題の件ですが、売上入力で伝票NOを採番しているのですが

2台同時に更新した時に伝票NOが重複する時があります。

伝票№を採番する方法のご教授をお願い致します。

 

 

【環境】

--------------------------------------------------------

サーバー:Windows2008R2

PC:Windows7

FMServer13

FMPro13

 

使用しているのはPCのみです。

--------------------------------------------------------

 

 

処理としては入力画面の最後に確定ボタンを押下すると下記のスクリプトが実行します。

基本的には社内でテストをした時は問題ないように思えるのですが

ユーザー様のところで先日重複した伝票NOが発生してしまいました。

 

 

T売上伝票は入力開始時に内部的にシリアル№を自動採番しており

シリアル№をプライマリキーにしております。

 

T売上伝票の売上伝票NOは数字タイプです。

 

S伝票NOというのは伝票NOを管理しているシステムマスタですが

「伝票NOセット」スクリプト内でS伝票NOの同一レコードに2台で更新した時に

「301 別のユーザがレコードを使用中です」というエラーコードが返ってくるので、

そのエラーが返って来ないようになるまでループするようにしています。

 

 

 

【メインスクリプト】

--------------------------------------------------------------------------------------------------------------

ユーザーによる強制終了を許可[オフ]

エラー処理[オン]

カスタムダイアログを表示["確定";"更新しますか?"]

If[Get(最終メッセージ選択)=1]

 

  If[T売上伝票::伝票NO=""]

    変数を設定[$$管理番号;値:""]

    Loop

      スクリプト実行[「伝票NOセット」]

      Exit Loop If[$$管理番号<>""]

      スクリプト一時停止/続行 [間隔(秒):1]

    End Loop

 

    フィールド設定[T売上伝票::伝票NO;$$管理番号]

    レコード/検索条件確定[ダイアログなし]

    キャッシュをディスクに書き込む

  End If

 

End If

--------------------------------------------------------------------------------------------------------------

 

 

【「伝票NOセット」スクリプト】

--------------------------------------------------------------------------------------------------------------

ユーザーによる強制終了を許可[オフ]

エラー処理[オン]

 

フィールド設定[T売上伝票_S伝票NO::最終NO;T売上伝票_S伝票NO::最終NO+1]

If[Get(最終エラー)=0]

  変数設定[$$管理番号;T売上伝票_S伝票NO::最終NO]

  現在のスクリプト終了[]

Else

  現在のスクリプト終了[]

End If

--------------------------------------------------------------------------------------------------------------

Outcomes