- ベストアンサー
Accessで社員番号の重複チェックと自動入力を実装する方法
- Accessのフォームで社員番号の重複チェックと自動入力機能を実装する方法について解説します。
- 重複のある場合はダイアログボックスを表示してメッセージを表示し、自動で社員名と所属を入力します。
- 重複のない場合は社員名と所属を自動で入力するように設定します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
再びmaruru01です。 閉じるかっこが1つ足らなかったようです。 正しくは、 If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text))) Then でした。 では。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
ご苦労様です。 すでに入力されている場合は、T_マスタの[社員氏名][所属][評価]をフォームに表示するんですよね。 でしたらここも以下のようにDLookUp関数を使用しましょう。 Me!社員氏名 = DLookUp("社員氏名", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Me!所属 = DLookUp("所属", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Me!評価 = DLookUp("評価", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) あ、そうそうちなみにExitイベントは、フォーカス喪失時イベントです。(フォーカス喪失後イベントはLostFocusイベント。) では。
お礼
何度もありがとうございます。 ここでもDlookUpを使うんですね。 そのまま持ってくればいいだけかと思いました。 おかげで思うものができました。 本当に本当にありがとうございました。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 F_マスタの[社員番号]テキストボックスのExitイベントに以下のように書きます。(T_マスタの[社員番号]フィールドが長整数型とします。) If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Then (「社員名」、「所属」を自動入力する処理) Else MsgBox "すでに入力されています。" (「社員番号」、「社員名」、「所属」、「評価」を自動入力する処理) End If では。
お礼
こんにちは。 すばやい回答ありがとうございます。 >Exitイベントに これがわからなかったので、「更新後処理」に以下のようにいれてみました。 ------------------------------ Private Sub 社員番号_AfterUpdate() If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Then Me![社員氏名] = Me![社員番号].Column(1) Me![所属] = Me![社員番号].Column(2) Else MsgBox "すでに入力されています。" Me![社員氏名] = Me![社員番号] Me![所属] = Me![所属] Me![評価] = Me![評価] End If End Sub ------------------------------ すると一番上の If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Then が赤くなり、 実行すると「コンパイルエラー 構文エラー」と出てしまいます。 どこがダメなんでしょうか? やはりExitでないとダメでしょうか?
お礼
再度ありがとうございます。 おかげでできました。 さらに質問なのですが、 elseの後の部分は MsgBox "すでに入力されています。" Me![社員氏名] = Me![社員氏名] じゃできないですよね。 MsgBox "すでに入力されています。" Me![社員氏名] = Tables![T_マスタテーブル]![社員氏名] もだめでした。 これはどのように標記すればいいのでしょうか? 申し訳ありませんが、再度回答いただけませんか? 宜しくおねがいします。