このエントリーをはてなブックマークに追加

入力フォームに新たな明細番号を設定する。

こちらは、Accessで作成した入力フォームです。明細番号テキストボックスには、オートナンバーを使わずに連番で自動採番されるように設定しています。そこで今回は、同じテーブル内で、明細番号を新たな番号から始めるためにする設定をしていきます。(例えば、170001から連番をとっていたものを、番号を飛ばして、新たに180001から連番を取りたいときなど。)

フォーム

こちらに別のフォームを用意しています。「伝票更新」ボタンを押したときに、新たな明細番号を設定できるようにコードを書いて行きます。

フォーム

標準モジュールにPublic変数「kosin」を整数型(Integer)で宣言します。Publicにするのは、2つのフォーム間で、変数を利用できるようにするためです。

Option Compare Database
Option Explicit

Public kosin As Integer

「伝番更新」ボタンクリック時イベントにコードを書きます。Public変数kosinに「1」を代入して、売上入力フォームを開きます。

Private Sub 伝番更新_Click()

kosin = 1
DoCmd.OpenForm "F_売上main"

End Sub

次に、入力フォームの読み込み時イベントにコードを書いていきます。

Private Sub Form_Load()
Dim Mei As String
If kosin = 1 Then
    DoCmd.GoToRecord , , acNewRec
    Mei = InputBox("明細番号を入力してください。", "明細番号")
    Do While Len(Mei) > 0
        If IsNumeric(Mei) = True Then
            Me.txt明細番号 = CLng(Mei)
            Exit Do
        Else
            Mei = InputBox("明細番号を数値で入力してください。", "明細番号")
        End If
    Loop

    If Len(Mei) = 0 Then
    DoCmd.Close acForm, "F_売上main"
    End If
    kosin = 0
End If
End Sub

では、コードの中身を見ていきます。

  1. 明細番号を入れる変数meiを文字列型(String)で宣言します。
  2. Public変数kosinが「1」のときは、入力フォームを、新しいレコードで開きます。
  3. インプットボックスダイアログを表示し、テキストボックスに入力した明細番号を変数「Mei」に入れます。
  4. 変数「Mei」のデータ型は、文字列型(String)なので、CLng関数で、長整数型に変換して、テキストボックス「txt明細番号」に入れます。
Dim Mei As String
If kosin = 1 Then
    DoCmd.GoToRecord , , acNewRec
    Mei = InputBox("明細番号を入力してください。", "明細番号")
    Me.txt明細番号 = CLng(Mei)
End If

そこで、変数「Mei」の値を、売上入力フォームのテキストボックス「txt明細番号」に入れるのですが、ここでは、「明細番号」フィールドのデータ型は、数値型に設定していますので、もし、数値以外の文字列が入力されたときや、インプットボックスのキャンルボタンが押されたときなどは、データ型が一致せず、エラーとなります。

エラーメッセージ

ですので、それを回避するために、コードを追加していきます。

  1. IsNumeric関数を使って、変数Meiが、数値として認識できるとき(Trueのとき)は、変数Meiを長整数型に変換して、「txt明細番号」に入れます。
  2. 変数Meiが数値として認識されないとき、再びInputBox関数で「明細番号を数値で入力」するよう、再度促します。
  3. Len関数で、変数Meiの長さを調べ、長さが0以上(つまり、何らかの値が入力されている)間は、Do While~Loopステートメントで、繰り返し処理をするようにします。
  4. ここでは、変数Meiが、数値と認識されたときは、「txt明細番号」に値を入れ、Exit Doで、Do While Loopから抜けるようにします。ここで、Exit Doで、Loopから抜けないと、Loop処理を止めることができなくなるので、必ず、Exit Doを記入します。
  5. 変数Meiが数値と認識できない間は、繰り返し、ダイアログを表示させます。
  6. 変数Meiの長さが「0」のとき(値が何も入力されなかったとき)は、売上入力フォームは閉じるようにします。
  7. Public変数kosinに「0」を代入します。
このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントフィード

トラックバックURL : http://gyoumuka.work/wp-trackback.php?p=2685

PAGE TOPへ戻る