Не похоже, что я могу просто построить запрос в VBA, что я обычно делаю.
У меня есть форма, где пользователи выбирают параметры из списков и тому подобное. Они нажимают кнопку «Отправить», которая должна отфильтровать таблицу, чтобы они могли вносить изменения только в эти записи. Эта таблица встраивается в ту же форму внизу формы. Пусто, пока они не установят параметры и не отправят.
Поскольку это таблица в форме и подчиненная форма / подчиненный отчет, из того, что я прочитал, единственный способ заполнить ее - это предварительно подготовленный запрос Access. Таким образом, мне нужно передать переменные, чтобы сделать его динамическим.
Итак, запрос numberSections
таков:
SELECT title, group, group_num
FROM groupings
WHERE co = [co] AND project = [project]
ORDER BY ID;
Насколько я понимаю, в скобках указана переменная.
VBA такой:
Function RunQueryForGroupings(coProj As Collection)
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("numberSections")
qdf.Parameters("co").Value = coProj(1)
qdf.Parameters("project").Value = coProj(2)
qdf.Execute
Set qdf = Nothing
End Function
Когда он достигает qdf.Parameters("co").Value = coProj(1)
, я получаю следующую ошибку:
Run-time error '3265':
Item not found in this collection.
Сначала я подумал, что coProj(1)
по какой-то причине не имеет значения, но это так, потому что я могу Debug.Print(coProj(1))
, так что это связано с объявлением.
Есть предложения?