Выполнить запрос к ODBC-подключенной таблице VBA - PullRequest
0 голосов
/ 26 марта 2009

У меня есть таблица (показания), уже подключенная ODBC в Access, которая открывается очень быстро, когда я нажимаю на нее.

Однако, когда я пытаюсь запустить это в VBA, он блокируется и никогда ничего не отображает:

Dim strSql As String
strSql = "SELECT readings.ids " & _
         "INTO ids_temp " & _
         "FROM readings " & _
         "WHERE readings.ids > 1234;"  //This is id in middle of list
DoCmd.SetWarnings False
DoCmd.RunSQL strSql
DoCmd.SetWarnings True

По какой-то причине это разрушает всю систему. Есть идеи?

Ответы [ 4 ]

0 голосов
/ 28 марта 2009

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

0 голосов
/ 27 марта 2009

Вместо использования DoCmd t обычно обрабатывается существующим соединением для создания объекта Command, который принимает операторы SQL для использования с методом Command.Execute.

Читая документацию по DoCmd, он, по-видимому, в первую очередь предназначен для запуска макросов из меню Access UI.

0 голосов
/ 28 марта 2009

Есть ли у вашей базы данных таблица ids_temp локально? Если таблица ids_temp является Связанной таблицей, она удалит таблицу, поскольку выберите в CREATES NEW TABLE. Если вы хотите добавить в таблицу, попробуйте команду INSERT INTO. Вы можете очистить таблицу перед вставкой данных.

0 голосов
/ 27 марта 2009

Позвольте мне сказать, что DoCmd.RunSQL никогда не рекомендуется, особенно если SetWarnings выключен, поскольку вы не знаете, соответствует ли результат ожидаемому или нет. Вы сказали VBA не сообщать об ошибках, поэтому никогда не знаете, были ли вставлены все записи или нет.

Очень легко заменить DoCmd.RunSQL моей функцией SQLRun (), размещенной здесь:

Как получить значение из запроса на обновление в Access VBA?

...