dポイントプレゼントキャンペーン実施中!

Accessで、以下のようなテーブルとフォームがあります。
テーブル:T_マスタ
社員番号
社員名
所属
評価

テーブル:T_社員一覧
社員番号
社員名
所属

フォーム:F_マスタ
社員番号
社員名
所属
評価

F_マスタの「社員番号」に社員番号を入力すると、T_社員一覧のデータを参照して、
社員名・所属を自動で入力するようにしてあります。

使用者から、「間違えて同じ社員番号を入力したときに、何かメッセージが欲しい」といわれました。
T_マスタの「社員番号」のインデックスは「重複なし」となっていて、入力が終わると、
同じ番号がいる、ということがわかるのですが、それではなく、
社員番号に入力をして、確定した時点でメッセージが欲しいのです。

理想としては、
■社員番号がすでにT_マスタに入力されていた場合
1.社員番号を入力
    ↓
2.「すでに入力されています。」というダイアログボックスを表示させ、
「社員番号」「社員名」「所属」「評価」を自動で入力させる。

■社員番号がまだ入力されていなかった場合
1.社員番号を入力
    ↓
2.「社員名」「所属」が自動で入力される。
(今現在の状態がこれです。)

というようにしたいのですが、どのようにすればよいのでしょうか?

A 回答 (3件)

再びmaruru01です。



閉じるかっこが1つ足らなかったようです。
正しくは、

If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text))) Then

でした。
では。
    • good
    • 0
この回答へのお礼

再度ありがとうございます。

おかげでできました。

さらに質問なのですが、
elseの後の部分は

MsgBox "すでに入力されています。"
Me![社員氏名] = Me![社員氏名]

じゃできないですよね。

MsgBox "すでに入力されています。"
Me![社員氏名] = Tables![T_マスタテーブル]![社員氏名]

もだめでした。

これはどのように標記すればいいのでしょうか?
申し訳ありませんが、再度回答いただけませんか?
宜しくおねがいします。

お礼日時:2002/06/10 13:08

ご苦労様です。



すでに入力されている場合は、T_マスタの[社員氏名][所属][評価]をフォームに表示するんですよね。
でしたらここも以下のようにDLookUp関数を使用しましょう。

Me!社員氏名 = DLookUp("社員氏名", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text))
Me!所属 = DLookUp("所属", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text))
Me!評価 = DLookUp("評価", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text))

あ、そうそうちなみにExitイベントは、フォーカス喪失時イベントです。(フォーカス喪失後イベントはLostFocusイベント。)
では。
    • good
    • 0
この回答へのお礼

何度もありがとうございます。

ここでもDlookUpを使うんですね。
そのまま持ってくればいいだけかと思いました。
おかげで思うものができました。

本当に本当にありがとうございました。

お礼日時:2002/06/10 14:29

こんにちは。

maruru01です。

F_マスタの[社員番号]テキストボックスのExitイベントに以下のように書きます。(T_マスタの[社員番号]フィールドが長整数型とします。)

If IsNull(DLookUp("社員番号", "T_マスタ", "社員番号 = " & CLng(Me!社員番号.Text)) Then
  (「社員名」、「所属」を自動入力する処理)
Else
  MsgBox "すでに入力されています。"
  (「社員番号」、「社員名」、「所属」、「評価」を自動入力する処理)
End If

では。
    • good
    • 0
この回答へのお礼

こんにちは。

すばやい回答ありがとうございます。

>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でないとダメでしょうか?

お礼日時:2002/06/10 11:37

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

このQ&Aを見た人はこんなQ&Aも見ています