MS Access с использованием VBA и Form, построить строку запроса и запустить его - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть форма MS Access, в которой пользователям предлагается выбрать или ввести слова, которые будут использоваться в предложении where для запроса.

Когда кнопка нажата, она создаст строку и использует ее для запуска запроса. Это будет только для чтения и для просмотра результатов подмножества из таблицы ссылок на SQL Сервер. Ничего больше. Я пробовал это с DoCmd.RunSQL, но это только для типа действия, такого как обновление, удаление и т. Д. c.

При событии нажатия кнопки у него будет похожий запрос.

strSQL = "Select top 10 * Where ID = ''" + textbox1.value + "'' from linked_Table_Name;"

Это не сработало.

DoCmd.RunSQL strSQL

1 Ответ

1 голос
/ 28 апреля 2020

Во-первых, и самое главное, никогда не объединяет полученные пользователем данные как часть SQL оператора . Любое приложение, использующее эту технику, широко открыто для атаки SQL инъекция и также завершится ошибкой, если пользователь включит разделитель строк (например, одинарную кавычку) или другой зарезервированный символ в вводимые данные.

Вместо этого используйте параметры.

Для вашего сценария я мог бы предложить создать сохраненный запрос с SQL:

select top 10 t.*
from linked_Table_Name t
where t.ID = Forms![Your Form Name]![textbox1]

Где Your Form Name - это имя вашей формы, содержащей элемент управления textbox1.

Затем ваше событие при нажатии может просто вызвать метод OpenQuery объекта DoCmd:

DoCmd.OpenQuery "YourSavedQuery"
...