Выполнить запрос access vba: Метод DoCmd.OpenQuery (Access) | Microsoft Learn
Содержание
404 Cтраница не найдена
Мы используем файлы cookies для улучшения работы сайта МГТУ и большего удобства его использования. Более подробную информацию об использовании файлов cookies можно найти здесь.
Продолжая пользоваться сайтом, вы подтверждаете, что были проинформированы об использовании файлов cookies сайтом ФГБОУ ВО «МГТУ» и согласны с нашими правилами обработки персональных данных.
Размер:
AAA
Изображения
Вкл.
Выкл.
Обычная версия сайта
К сожалению запрашиваемая страница не найдена.
Но вы можете воспользоваться поиском или картой сайта ниже
|
|
Урок 6.
Как выполнить запрос к API
В этом уроке вы узнаете:
- Что нужно для выполнения запроса
- Какие есть форматы взаимодействия с API Директа
- Куда отправлять запросы
- Какие HTTP-заголовки используются
- Чем выполнять запросы
- Выполняем первый запрос
- Что дальше
- Полезные ссылки
- Вопросы
В этом уроке мы расскажем о форматах взаимодействия с API Директа и покажем, как выполнить первый запрос.
Пройдя предыдущие уроки, вы уже выполнили все условия, необходимые для успешного выполнения запросов:
У вас есть аккаунт в Директе, и вы приняли пользовательское соглашение в разделе API веб-интерфейса Директа.
Вы зарегистрировали приложение на Яндекс.OAuth.
Вы подали заявку на доступ к API и получили одобрение заявки.
Вы получили OAuth-токен.
- Вы включили Песочницу.
Внимание. Поскольку вы подавали заявку на тестовый доступ, то работать сможете только с Песочницей и тестовыми данными.
Приложение обращается к серверу API Директа по сетевому протоколу HTTPS, выполняя POST-запросы. Каждый POST-запрос должен быть сформирован в определенном формате. В этом же формате сервер API вернет ответ.
API Директа поддерживает два формата:
Адрес для отправки запросов в Песочницу зависит от выбранного формата:
- Для JSON-запросов —
https://api-sandbox.direct.yandex.com/json/v5/{сервис}
- Для SOAP-запросов —
https://api-sandbox.direct.yandex.com/v5/{сервис}
- WSDL-описание находится по адресу
https://api-sandbox.direct.yandex.com/v5/{сервис}?wsdl
Здесь {сервис} — имя сервиса, с которым вы хотите работать. Каждый сервис предназначен для работы с определенным классом объектов. Например, для управления рекламными кампаниями используется сервис Campaigns, и запросы к этому сервису нужно отправлять на следующие адреса:
https://api-sandbox.
direct.yandex.com/json/v5/campaigns — JSON-запросы;
https://api-sandbox.direct.yandex.com/v5/campaigns — SOAP-запросы.
Адрес для запросов является регистрозависимым — необходимо указывать все символы в нижнем регистре, в том числе и название сервиса, иначе возникнет ошибка.
Внимание. Адреса для работы с реальными рекламными материалами отличаются от адресов Песочницы: они начинаются с https://api.direct.yandex.com.
Для выполнения запросов к API вы можете разработать свое приложение на любом языке программирования. Пока вы учитесь, запросы можно выполнять любой программой для отправки POST-запросов — например, с помощью плагина для браузера или из командной строки с помощью утилиты cURL.
Приведенные здесь и далее примеры пригодны для использования с помощью утилиты cURL. Вы можете скорректировать предложенный код под ваше приложение на любом языке программирования.
Формат примеров для ОС Windows отличается: JSON-код заключен в двойные кавычки, а в самом коде экранированы все двойные кавычки. Например:
-d "{\"method\":\"get\",\"params\"...
Внимание. Не забудьте изменить токен и идентификаторы объектов в примерах на ваши данные.
Посмотрим, какие тестовые кампании создались в Песочнице. Обратите внимание на ключевые параметры запроса:
Запрос отправляется к сервису Campaigns на адрес Песочницы:
https://api-sandbox.direct.yandex.com/json/v5/campaigns
В заголовке Authorization передан OAuth-токен.
Вызван метод get для получения кампаний.
- cURL
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"get","params":{"SelectionCriteria":{},"FieldNames":["Id","Name"]}}' https://api-sandbox.direct.yandex.com/json/v5/campaigns
- cURL для Windows
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"get\",\"params\":{\"SelectionCriteria\":{},\"FieldNames\":[\"Id\",\"Name\"]}}" https://api-sandbox.
direct.yandex.com/json/v5/campaigns
- Запрос
POST /json/v5/campaigns/ HTTP/1.1 Host: api-sandbox.direct.yandex.com Authorization: Bearer ТОКЕН Accept-Language: ru Client-Login: ЛОГИН_КЛИЕНТА Content-Type: application/json; charset=utf-8 { "method": "get", "params": { "SelectionCriteria": {}, "FieldNames": ["Id", "Name"] } }
- Ответ
HTTP/1.1 200 OK Connection:close Content-Type:application/json Date:Fri, 28 Jun 2016 17:07:02 GMT RequestId: 1111111111111111112 Units: 10/20828/64000 Server:nginx Transfer-Encoding:chunked { "result": { "Campaigns": [{ "Name": "Test API Sandbox campaign 1", "Id": 1234567 }, { "Name": "Test API Sandbox campaign 2", "Id": 1234578 }, { "Name": "Test API Sandbox campaign 3", "Id": 1234589 }] } }
Итак, вы выполнили первый запрос к API Директа. В следующих уроках мы подробно расскажем о принципах работы с данными в API и рассмотрим более сложные примеры.
Документация:
Доступ и авторизация
HTTP-заголовки
Формат JSON
Протокол SOAP
- Как приложение может взаимодействовать с API Директа?
По сетевому протоколу HTTPS путем выполнения POST-запросов.С помощью передачи XLS/XLSX-файлов.Через обмен пакетами посредством FTP и SFTP.
Верно!
Неверно.
Неверно.
- Какой HTTP-заголовок обязательно должен быть указан в запросе к серверу API Директа?
Client-Login.Client-IDBearer.Authorization.
Неверно.
Неверно.
Неверно.
Верно!
- Как сервер API Директа отличает запросы к тестовым данным от запросов к реальным данным?
По адресу, на который отправлен запрос.Сервер API автоматически определяет тип данных по типу заявки на доступ приложения к API Директа.Тип данных определяется сервером API по наличию в запросе HTTP-заголовков X-Data-Production и X-Data-Sandbox.
Верно!
Неверно.
Неверно.
Как выполнить запрос доступа с помощью Excel VBA?
спросил
Изменено
4 года, 9 месяцев назад
Просмотрено
6к раз
Я новичок в Access и некоторое время пытался выполнить запрос Access и вставить результаты в Excel с помощью VBA. Я объединил некоторый код, который я нашел, и я думаю, что он у меня почти есть, но не могу понять последний шаг. Вот код:
Подтест() Dim ws As рабочий лист Dim A как объект Dim rs как объект Application.DisplayAlerts = Ложь Установить A = СоздатьОбъект("Доступ.Приложение") Установите ws = ThisWorkbook.Sheets("Лист1") А.Видимый = Истина A.OpenCurrentDatabase ("путь доступа к базе данных") A.DoCmd.OpenQuery ("имя запроса") Установить rs = A.CurrentDb().QueryDefs("имя запроса").OpenRecordset() Если Не rs.EOF Тогда ws.Range("A1").CopyFromRecordset rs Конец, если rs.Закрыть Application.DisplayAlerts = Истина Конец сабвуфера
Я пытаюсь выполнить запрос и вставить результаты в ячейку A1 на листе 1.
Я получаю «ошибку времени выполнения 3219» для строки:
Set rs = A.CurrentDb().QueryDefs("имя запроса").OpenRecordset()
Любая помощь будет принята с благодарностью.
Спасибо,
G
- vba
- excel
- мс-доступ
2
Я адаптировал ваш код для извлечения данных из запроса Access без необходимости создания полного экземпляра Access.Application
. Проверено и работает в Excel 2010.
Const cstrPath As String = "C:\share\Access\Database2.accdb" Const cstrQuery As String = "qryBase" Dim dbe As Object 'DAO.DBEngine' Dim rs As Object 'DAO.Recordset' Dim ws As рабочий лист Application.DisplayAlerts = True 'оставлять оповещения включенными во время тестирования' Установите dbe = CreateObject("DAO.DBEngine.120") Установите rs = dbe.OpenDatabase (cstrPath). OpenRecordset (cstrQuery) Если Не rs.EOF Тогда Установите ws = ThisWorkbook.Sheets("Лист1") ws.Range("A1").CopyFromRecordset rs Конец, если rs.Закрыть Application.DisplayAlerts = Истина
4
Я бы использовал набор записей ADODB. Попробуйте приведенный ниже код. Здесь я подключаюсь к книге Excel, но вы можете использовать ту же логику для доступа к базе данных, вам просто нужно изменить строку подключения.
Частный мошенник Как ADODB.Connection Частный ra As ADODB.Recordset ' SqlString = SQL-запрос ' Sht = имя листа, на котором должен отображаться вывод ' Rng = диапазон ("C5"), в котором должен отображаться вывод Sub DoSql (SqlString как строка, Sht как строка, Rng как строка, необязательный IncludeHeading As Boolean = False) Затемнить как строку Тусклое разрешение как вариант Установить con = новый ADODB.Connection Установить ra = новый ADODB.Recordset разрешение = "" 'a = Установите соответствующую строку подключения для вашей базы данных 'Приведенное ниже соединение относится к той же книге Excel, которая содержит макрос a = "Provider=Microsoft.ACE.OLEDB.12.0;Источник данных=""" & ThisWorkbook.FullName & """;Расширенные свойства=""Excel 12.0 Xml;HDR=YES"";" 'MsgBox a 'MsgBox SqlString Если Не Оставлено("" & con, 8) = "Поставщик" Тогда con.Открыть Конец, если Если Не ra.State = 0 Тогда ra.Закрыть Конец, если ra.Open SqlString, против Если Нет (ra.EOF и ra.BOF), то ra.MoveFirst Листы(Шт).Выбрать Если ЗаголовокВключить = Истина Тогда Для intColIndex = 0 Для ra.Fields.Count - 1 Range(Rng).Offset(0, intColIndex).Value = ra.Fields(intColIndex).Name Следующий Диапазон(Rng).Смещение(1, 0).CopyFromRecordset ra Еще Диапазон(Rng).CopyFromRecordset ра Конец, если Конец, если ra.Закрыть кон.Закрыть Конец сабвуфера
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
Выполнение запросов — Access 2007 VBA
Последнее обновление вторник, 02 мая 2023 г. |
Доступ к VBA 2007
Запросы, которые вставляют, обновляют или удаляют запросы, называются запросами действий. Хотя эти типы запросов не возвращают записи, их обычно запускают с помощью кода.
Существует три способа программного выполнения запроса: с помощью метода DoCmd.RunSQL, метода object.Execute и метода OpenRecordset. Аргументом запроса для любого из следующих методов может быть либо имя постоянного или временного QueryDef, либо строковое выражение, эквивалентное запросу.
DoCmd.RunSQL
Хотя это и не является частью объектной модели DAO, вы можете выполнить метод RunSQL объекта DoCmd для выполнения запроса действия:
DoCmd.RunSQL «UPDATE Tablel SET Fieldl = 123»
Выполнение запроса таким образом отображается окно сообщения для подтверждения того, что вы хотите внести изменения в базу данных. Чтобы устранить это окно сообщения, установите для свойства SetWarnings объекта DoCmd значение False перед вызовом DoCmd.RunSQL, но не забудьте установить его обратно, когда закончите, иначе все предупреждающие сообщения будут отключены.
DoCmd.SetWarnings Ложь | |
DoCmd.RunSQL «ОБНОВЛЕНИЕ таблицы SET Fieldl = | = 123 дюйма |
DoCmd.SetWarnings True |
Любые ошибки, возникающие при выполнении запроса, будут отображать окно сообщения. Вы можете отключить окно сообщения, как описано ранее, и вы можете перехватить ошибку, используя конструкцию On Error Goto. По умолчанию запрос включается в существующую транзакцию, но его можно исключить, установив для свойства UseTransaction значение False:
DoCmd.RunSQL «UPDATE Tablel SET Fieldl = 123», False object.Execute
Вы также можете использовать метод Execute объекта QueryDef или объекта базы данных для выполнения запроса действия:
кв. | Выполнить | опции | ||
дБ. | Выполнить | «ОБНОВЛЕНИЕ таблицы SET Fieldl = | = 123″, | , options |
При использовании метода Execute нет необходимости вызывать метод SetWarnings для отключения окон сообщений подтверждения изменений, поскольку они не отображаются. Метод Execute работает непосредственно со своим родительским объектом.
Существует несколько основных преимуществ использования метода Execute вместо метода DoCmd.RunSQL:
□ Execute выполняется быстрее, чем DoCmd.RunSQL.
□ Execute может быть включен в существующую транзакцию, как и любая другая операция DAO, без необходимости указывать для этого параметр.
□ Вы можете указать несколько параметров, изменяющих способ работы метода.
Константа | Описание |
dbDenyWrite | Отказывает другим пользователям в праве на запись (только для рабочих областей Microsoft Access). |
dblnconsistent | Выполняет несогласованные обновления (только для рабочих областей Microsoft Access). |
дБПоследовательный | Выполняет согласованные обновления (только для рабочих областей Microsoft Access). |
dbSQLPassThrough | Выполняет сквозной запрос SQL, который передает запрос в базу данных ODBC для обработки. (Только для рабочих областей Microsoft Access). |
дбфаилонеррор | Откат обновлений в случае возникновения ошибки (только для рабочих областей Microsoft Access). |
dbSeeChanges | Создает ошибку времени выполнения, если другой пользователь изменяет данные, которые вы редактируете (только для рабочих областей Microsoft Access). |