2016-05-19 6 views
0

私はアクセスVBAで自分自身を教えています。私はこれを今の年齢で把握しようとしていますが、動作させることはできません。どんなアドバイスも本当に感謝しています。関連テーブルのテキストボックスのデフォルト値を設定する

私はstaffテーブルとこのテーブルにバインドされているフォームfrmStaffのデータベースを持っています。 tblStagesと呼ばれる第2のテーブルもあり、そこには各職員の指導段階が記録されています。これらのテーブルはstaffIDフィールドに関連しています。

現在のレコードのスタッフメンバーの現在のコーチングステージを表示するフォームにテキストボックスを追加しようとしています(サブフォームの使用を避けようとしています)。私は以下のように、このテキストボックスのデフォルト値を設定している:

DLookup("[stage]", "[tblStages]", "[staffID] = '" & [Forms]![frmStaff]![txtStaffID] & "' AND isnull([endDate])") 

しか段階endDateがnullで、各スタッフのための1つのレコードがあります。このDlookupはvbaエディタで完全に機能しますが、テキストボックスのデフォルト値として設定すると機能しません。これは、フォームが開く前にデフォルト値を見つけようとしているため、txtStaffIDコントロールが空であるためです。

この問題を正しく説明していただければ幸いです。誰かが正しい方向に私を指すことができれば、私は信じられないほど感謝しています。ありがとう

+0

フォームロードでVBAの値を設定しないのはなぜですか? – Fionnuala

+0

こんにちはFionnuala。返信いただきありがとうございます。私はおそらくこれを述べているはずですが、フォームビューは連続しています。したがって、テキストボックスの値は、表示されるレコードごとに異なる必要があります – Leroy

+0

その場合、あなたの最善の策は参加です。 – Fionnuala

答えて

0

qrfrmStaffという名前のクエリを作成します。

SELECT staff.*, tblStages.stage AS Stage 
FROM tblStages INNER JOIN staff on tblStages.staffID = staff.staffID 
WHERE tblStages.endDate Is Null 

qrfrmStafffrmStaffとしてレコードソース、およびstageてtextBoxのコントロールソースを持っています。

query is not read only

+0

それはMS Accessで実行されることを確認しましたか?ほとんどの場合、結合タイプを指定する必要があります。 – Fionnuala

+0

あなたの役に立つコメントのおかげでfionnuala! @Leroy、あなたが答えを受け入れる前に、実際に動作し、フォームがうまく動作することを確認してください。 – marlan

+0

公正なポイント。私はすでに上のあなたのコメントに基づいてクエリを書いていたので、実際に公式の答えからコードをコピーしていませんでした。私は次回にそれをもう一度チェックすることになるでしょう – Leroy

関連する問題