критерии запроса, основанные на поле формы

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

[Forms]![FORMAL_CERT_REVIEW_CHECK_FORM]![REVIEW_CHECK_ID] 

Довольно простой материал. Но я столкнулся с проблемой, когда, когда я запускаю запрос, я получаю подсказку, в которой говорится, что мне нужно ввести значение. Я знаю, что это обычно происходит, когда вы устанавливаете критерии для чего-то, что может не существовать, или вы пишете его неправильно, но я проверил все это, и кажется, что все выглядит нормально.

Мне было любопытно, есть ли что-то, чего я мог бы потерять, как собственность на поле или что-то, о чем я не думал.

Когда вы напрямую открываете запрос, который включает ссылку на элемент управления формой, Access может извлекать значение параметра запроса из этого элемента управления в открытой форме.

Однако, если вы попытаетесь использовать тот же запрос, что и источник для набора записей, Access не разрешит параметр запроса из открытой формы.

Например, это мой запрос, qryREVIEW_CHECK_ID .

 SELECT f.id, f.datetime_field, f.some_text FROM tblFoo AS f WHERE f.id=[Forms]![FORMAL_CERT_REVIEW_CHECK_FORM]![REVIEW_CHECK_ID]; 

Когда FORMAL_CERT_REVIEW_CHECK_FORM открывается, все работает нормально, когда я открываю форму напрямую … например, это …

 DoCmd.OpenQuery "qryREVIEW_CHECK_ID" 

Однако использование этого запроса в качестве источника для набора записей вызывает ошибку 3061, «Слишком мало параметров. Ожидаемый 1.»

 Dim db As DAO.database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("qryREVIEW_CHECK_ID") 

Обходным путем является открытие набора записей из объекта QueryDef . И Eval() чтобы Access разрешил параметр, используя имя параметра.

 Dim qdf As DAO.QueryDef Set qdf = db.QueryDefs("qryREVIEW_CHECK_ID") qdf.Parameters(0) = Eval(qdf.Parameters(0).Name) Set rs = qdf.OpenRecordset 

В вашем описании не указывается, является ли ваша форма простой формой или подформой. Я столкнулся с одной и той же проблемой и понял, что я только вводил имя подформы в критерии.

Предполагая, что у вас есть подформа FORMAL_CERT_REVIEW_CHECK_FORM в PARENT_FORM, ваши критерии должны читать

[Формы]! [PARENT_FORM]! [FORMAL_CERT_REVIEW_CHECK_FORM]! [REVIEW_CHECK_ID]

Надеюсь, это поможет вам или другим. Используется в Access 2016.