Мне нужно создать сохраненный запрос MS Access из моей программы VB.net с помощью OleDb. Но прежде чем я создам запрос, мне нужно проверить и посмотреть, существует ли он в базе данных. Если он существует, я хочу его обновить. Как проверить существующий запрос в MS Access с помощью OleDb?Проверка существующего сохраненного запроса в MS Access
ответ
«Если он существует, я хочу его обновить».
Основываясь на обсуждении комментариев, я понимаю, что вы создадите инструкцию для соединения OleDB для создания запроса. (In Access parlance, a QueryDef
.)
Когда запрос еще не существует, выполнение выполняется успешно, и все готово.
Если запрос действительно существует, попытка выполнения вызовет ошибку, в результате которой вы поймаете ловушку в коде VB.Net
. В этот момент вы хотите пересмотреть существующий запрос. К сожалению, я не знаю, как изменить существующий запрос с помощью OleDb. Тем не менее, вы можете отменить существующий запрос и повторно выполнить свой оператор для создания новой версии.
Вы можете выполнить оператор DDL доступа, чтобы отменить существующий запрос. Один из этих двух вариантов будет делать то, что вам нужно:
DROP VIEW YourQueryNameHere;
DROP PROCEDURE YourQueryNameHere;
Первый предназначен для простых SELECT
запросов. Второй - для того, что Access вызывает «запросы действий»: INSERT
; UPDATE
; DELETE
. Запрос «make table» (SELECT <field list> INTO NewTable FROM ...
) также относится ко второй (ПРОЦЕДУРА) категории, как я помню (проверьте, нужно ли вам это делать). Я думаю, что запрос SELECT
с PARAMETERS
также попадает в эту вторую категорию (при необходимости проверьте).
Обратите внимание, что это только рекомендуемое направление. Я не могу предложить вам код VB.Net
. И я надеюсь, что вы знаете или можете понять, как сделать необходимую обработку ошибок в VB.Net
.
Насколько мне известно, представления и процедуры являются операциями 'select'. Access вызывает его просмотр, если он не использует никаких параметров (например, значение элемента управления формой) и процедуры, если он это делает. – Yawar
Мне нравится идея просто отбросить существующий запрос и создать новый. Легче обойти возможную ошибку «не существует», чем выяснить, как изменить запрос. – Yawar
@ HansUp Это похоже на путь! Я начну работать над этим! Благодаря! – gromit1
- 1. Запуск сохраненного запроса MS Access из C#
- 2. с использованием существующего запроса MS Access в SQL CE
- 3. запроса для MS Access
- 4. Синтаксис запроса MS-Access
- 5. Шаблон запроса в MS Access
- 6. MS Access Проверка кода SQL
- 7. MS Access Crosstab Параметры запроса
- 8. MS Access 2007: дата запроса
- 9. Проверка XML с XSD в MS Access
- 10. Проверка неверных импортированных данных в MS Access
- 11. Запуск асинхронного запроса в MS Access
- 12. Экспорт запроса MS Access в Excel
- 13. ошибка переполнения sql-запроса в MS Access
- 14. Заказ союзного запроса в MS Access SQL
- 15. Преобразование запроса SQl в MS Access
- 16. Sub Запрос в Выбор запроса MS Access
- 17. Преобразование SQL-запроса в MS-Access SQL
- 18. ms-access сохранить результат запроса в строке
- 19. Показать ход HTTP-запроса в MS Access
- 20. Запрос UPDATE на основе сохраненного запроса SELECT в Access?
- 21. Excel VBA для выполнения сохраненного запроса UNION от MS Access 2003
- 22. транзакции в MS Access
- 23. MS Access 2007 - запрос внутри запроса внутри запроса внутри запроса
- 24. Обновление запроса с использованием запроса выбора в MS Access VBA
- 25. MS Access - отображать отдельные результаты запроса подформата
- 26. Настройка фокуса в MS Access
- 27. Изменение запроса от MySQL к MS Access
- 28. Запрос пользователя для параметра запроса MS Access
- 29. MS Access функции диапазона времени замедления запроса
- 30. Создание запроса MS Access с номером страницы?
Вы исключили попытку создать запрос доступа и захватить ошибку, когда она уже существует? – HansUp
Если вы собираетесь создать запрос в VBA, вы всегда можете поставить 'On Error Resume Next' в строке перед определением запроса. Затем сразу после запроса введите 'On Error Goto Err_Handler'. Очевидно, Err_Handler можно назвать по-разному. Это создало бы запрос только в том случае, если он не существует и не будет генерировать ошибку, если он существует. – Linger
@HansUp Я никогда не делал ловушек ошибок. Не могли бы вы привести краткий пример? – gromit1