2016-05-19 4 views
0

Я сам участвую в доступе к VBA, и я пытался понять это на протяжении веков, но не могу заставить его работать. Любой совет будет очень оценен.Установка значения по умолчанию для текстового поля из связанной таблицы

У меня есть база данных с таблицей staff и формой frmStaff которая привязана к этой таблице. Существует также вторая таблица под названием tblStages, в которой записаны этапы коучинга, в которых каждый сотрудник был включен. Эти таблицы относятся к полю staffID.

Я пытаюсь добавить текстовое поле в форму, которая отображает текущий этап тренировки для сотрудника в текущей записи (я пытаюсь избежать использования подчиненной формы). Я установить значение по умолчанию для этого текстового поля, как показано ниже:

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

Там будет только когда будет 1 запись для каждого сотрудника, где стадия endDate является нулевой. Этот Dlookup отлично работает в редакторе vba, но когда я устанавливаю его как значение по умолчанию для текстового поля, оно не работает. Я ожидаю, что это связано с тем, что он пытается найти значение по умолчанию перед открытием формы, и поэтому элемент управления txtStaffID пуст.

Надеюсь, я правильно объяснил эту проблему. Если бы кто-нибудь мог указать мне в правильном направлении, я был бы невероятно благодарен. Спасибо

+0

Почему бы не установить значение в VBA в виде нагрузки? – Fionnuala

+0

Hi 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 

У qrfrmStaff как frmStaff источника записи и stage источника управления текстового поля в.

Удостоверьтесь, что query is not read only!

+0

Вы проверили, что будет работать в MS Access? По большей части вам нужно указать тип соединения. – Fionnuala

+0

Спасибо fionnuala за полезный комментарий! @Leroy, пожалуйста, убедитесь, что на самом деле это работает, и форма работает красиво, прежде чем вы примете ответ. – marlan

+0

Справедливая точка. Я уже написал запрос на основе вашего комментария выше, поэтому на самом деле не копировал код из вашего официального ответа. Я обязательно проверю его в следующий раз – Leroy