アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2003のフォームで社員管理システムを作ろうとしていますが、VBAの記述でわからないことがあるので、教えてください。

まず、テキストボックス「txt_検索」に社員番号を入力し「cmd_検索」ボタンを押すと、社員管理テーブルの社員番号フィールドより検索をします。
社員管理テーブルに該当するレコードがある場合は、レコードの編集となり、社員番号がない場合はテキストボックス「txt_社員番号」に「txt_検索」の値を入れた新規レコードの作成としたいのです。

入力した値でレコードの検索をして、無いなら新規作成といったコードは
どのような記述になるのか教えてください。
よろしくお願いいたします。

A 回答 (1件)

社員管理テーブルを元に作成されたフォームでしょうか。



レコードソースに社員管理テーブルが指定されており、
cmd_検索、txt_検索 は、ヘッダー部に作成されているものと仮定します。


以下一例)

txt_検索 に入力あったら、まず既定値を設定し、検索後なかったら新規へ

Private Sub cmd_検索_Click()
  If (Len(Nz(Me.txt_検索)) > 0) Then
    Me.txt_社員番号.DefaultValue = "'" & Me.txt_検索 & "'"
    With Me.Recordset
      .FindFirst "社員番号='" & Me.txt_検索 & " '"
      If (.NoMatch) Then .AddNew
    End With
  End If
End Sub


※ 社員番号がテキスト型の時の例です。

※ 追加/削除/更新の許可を制御されていた場合には、.NoMatch 判別部分で設定してみてください。



全件を表示しておいて対象のところに移動・・・というのが前述した方法になります。

必要なものだけを表示するようにする方法の一例は以下。

レコードソースのクエリの社員番号抽出条件に [Forms]![フォーム名]![txt_検索] を指定します。

txt_検索 に入力後、 cmd_検索 で再クエリします。
(既定値も設定しておきます)

Private Sub cmd_検索_Click()
  If (Len(Nz(Me.txt_検索)) > 0) Then
    Me.txt_社員番号.DefaultValue = "'" & Me.txt_検索 & "'"
    Me.Requery
  End If
End Sub

もしくは、cmd_検索 は不要で、txt_検索 の更新後処理で行います。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!