Давайте рассмотрим пример. параметризованный запрос выглядит так:
Select Tbl_Country.* From Tbl_Country WHERE id_Country = _
[?enter ISO code of the country]
и вы хотели бы иметь возможность получить это значение ([? Enter ... country] one) из формы, где у вас есть элементы управления и некоторые данные. Ну ... это может быть возможно, но требует некоторой нормализации кода.
Одним из решений было бы присвоение элементам управления формы определенной логики, например, fid_Country
для элемента управления, который будет содержать значение id_Country
. Затем ваш запрос может быть представлен в виде строки:
qr = "Select Tbl_Country.* From Tbl_Country WHERE id_Country = [fid_country]"
Как только вы ввели все запрошенные данные в форму, нажмите кнопку «запрос». Логика будет просматривать все элементы управления и проверять, присутствуют ли они в запросе, в конечном итоге заменяя параметр значением элемента управления:
Dim ctl as Control
For each ctl in Me.controls
If instr(qr,"[" & ctl.name & "]") > 0 Then
qr = replace(qr,"[" & ctl.name & "]",ctl.value)
End if
Next i
При этом у вас будет полностью обновленный запрос, в котором параметры были заменены реальными данными. В зависимости от типа fid_country (строка, GUID, дата и т. Д.) Может потребоваться добавить дополнительные двойные кавычки или нет, чтобы получить окончательный запрос, например:
qr = "Select Tbl_Country.* From Tbl_Country WHERE id_Country = ""GB"""
Это полностью совместимый с Access запрос, который вы можете использовать для открытия набора записей:
Set rsQuery = currentDb.openRecordset(qr)
Я думаю, что вы сделали здесь.
Эта тема важна, когда ваша цель - разработать приложения Access. Вы должны предложить пользователям стандартный способ запроса данных из их графического интерфейса не только для запуска запросов, но и для фильтрации непрерывных форм (точно так же, как это делает Excel с опцией «автофильтр») и управления параметрами отчетов. Удачи!