2017-08-18 17 views
0

私は2つのテーブルを持っていますが、それはemployeescustomersとしましょう。データ入力フォームを使用して特定のフィールドを自動入力する

employeesはかなり基本的なものです:

ID | title | emp_name | building | email | phone 

customersはあまり違いはありません。

ID | cust_name | address | phone | emp_title | emp_name 

私はcustomersへのデータ入力に使用されるフォームを持っています。フィールドのうちの2つはemployee_titleemployee_nameです。

employee_nameは、コントロールソースがemployee_nameで、行ソースがSELECT [employees].emp_name FROM employees;であるコンボボックスです。 employee_titleを必要とするAfter Updateイベントもあります。

employee_titleの場合、コントロールソースは=DLookUp("title","employees","emp_name = '" & [employee_name] & "'")です。

これはフォーム自体にとって問題ありません。プルダウンから従業員の名前を選択すると、その従業員の名前が正しく表示されます。ただし、従業員のタイトルはcustomersテーブルに挿入されません(他のすべてが正しく挿入されています)。私は完全にMS Accessに精通していませんが、99%はコントロールソースがDLookUpであり、テーブルへの参照ではないためです。

従業員のタイトルをフォームに表示し、顧客のテーブルに挿入するにはどうすればよいですか?

+0

実際には、従業員の名前とタイトルを顧客レコードに保存する必要はありません。単純に従業員のIDです。次に、Employeesテーブルをcustomersテーブルにリンクして、必要に応じてそのデータをインポートします。たとえば従業員が名前を変更した場合(結婚した場合)、表示されたレコードは自動的に更新されます。 – Minty

答えて

0

これを正しく処理するには、VBAを少し使用する必要があります。

まず、emp_titleemployee_titleのコントロールソースを設定(またはtitle、またはemployee_title、あなたの質問には、この列の名前について少しあいまいです)。

次に、employee_nameコンボボックスに次のコードを追加します。

Private Sub employee_name_AfterUpdate() 
    employee_title = DLookUp("title","employees","emp_name = '" & employee_name & "'") 
End Sub 
+0

これはテーブルにエントリが作成された後にのみ機能します。つまり、フォームに入力してからフォームに目を通すまで、タイトルは表示されません。 –

+0

これをOnChangeイベントに移動して前に表示することはできますが、名前がまだ完全に入力されていないときに既に表示しようとすると問題が発生する可能性があります。 –

+0

それはどちらもうまくいかなかったが、大きな問題はなかった。主なものは、それをテーブルに入れることでした。 –

関連する問題