ここから本文です

ACCESS共有時の自動採番について 見積入力frで入力 登録ボタンでwk見積tbから見...

ykc********さん

2019/5/1014:58:09

ACCESS共有時の自動採番について
見積入力frで入力
登録ボタンでwk見積tbから見積tbへ保存
という形をとって社内共有する予定です。

見積番号は見積入力fr更新前イベントで
見積tbの最大

値+1で自動採番としていますが
共有するばあい、このままだと他の人がwk見積tbで作業中の番号が最大値になるので
どうやってそれを含めて最大値を得るとよいかわかりません。
ご教授お願いします。

閲覧数:
50
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hat********さん

2019/5/1020:26:40

別に採番用のテーブルを用意します。
数値型のフィールド1つで、1レコードのみとします。
そこに、見積tb の主キー+1の番号を入力しておきます。

入力フォームの更新前処理で、VBAで採番用テーブルを開いて、番号を取得して、その後すぐに番号に +1 して保存します。

VBAで採番用レコードを開く時に、他ユーザー読み取り不可のオプションで開くようにします。
もし、他のユーザーが既に開いていたら、エラーになりますので、その場合は、しばらく待って、再度、開くようにします。開けるまでDo ・・・ Loop で繰り返します。

■T'sWare VBA開発に役立つ資料集-14 ~DAOのOpenRecordsetメソッドパラメータ一覧表~
https://tsware.jp/study/vol9/vbanote_14.htm

  • hat********さん

    2019/5/1021:12:39

    コード例

    標準モジュール
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    フォームの更新前処理
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Dim rs As DAO.Recordset
        
        On Error Resume Next
        Do
            Set rs = CurrentDb.OpenRecordset("T_採番", dbOpenTable, dbDenyRead)
            If Err = 0 Then Exit Do 'エラーなく開けたたらループを抜ける
            Sleep 100 '0.1秒待機
            Err.Clear
        Loop
        On Error GoTo 0
        Me!ID = rs!番号 '主キーに採番した番号を入力
        rs.Edit
        rs!番号 = rs!番号 + 1
        rs.Update
        rs.Close
        
    End Sub

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tac********さん

2019/5/1019:47:50

採番直後に保存すれば良いと思うのですが?

手動入力をキャンセルした場合は欠番に成りますがやむを得ない事だと思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる