|
|||||||
Открытие Recordset в ADO/VBA - AskIt.RU
Время создания: 16.03.2019 23:43
Текстовые метки: Recordset
Раздел: Разные закладки - VBA - Array - Recordset
Запись: xintrea/mytetra_db_adgaver_new/master/base/15188074416wipnsgczu/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Открытие Recordset в ADO/VBA - AskIt.RU Открытие Recordset, метод Open(), передача запроса при открытии Recordset Обычно следующий этап после установки соединения — создание объекта Recordset и работа с ним. Что такое объект Recodrset? Само слово Recodrset расшифровывается как Set of Records, то есть набор записей. Проще всего представить его как табличку (аналогичную таблицам в Excel), которая находится в оперативной памяти компьютера. Однако у Recordset есть принципиальные отличия от таблиц Excel:
Recordset обычно создается на основе данных, полученных с источника (но может быть создан и заполнен вручную), в которых предусмотрены столбцы (Fields) и строки (Row). Создание объекта Recordset и заполнение его данными с источника в самом простом варианте выглядит так (подразумевается, что мы открыли при помощи объекта cn соединение с учебной базой данных Northwind на SQL Server): Dim rs As New ADODB.Recordset rs.Open "customers", cn Убедиться, что Recordset действительно создан и существует, можно, например, при помощи строки MsgBox rs.GetString При открытии Recordset вполне могут возникнуть ошибки, поэтому рекомендуется, как обычно, использовать обработчик ошибок. Специальной коллекции Errors в Recordset не предусмотрено, поэтому придется обойтись стандартным объектом Err. В нашем примере мы открыли таблицу Customers целиком. Однако это — не единственный (и не лучший) способ извлечения данных с источника. Для метода Open() рекомендуется использовать запрос на языке SQL. Например, в нашем случае можно было бы использовать такой код: rs.Open "select * from dbo.customers", cn Почему запрос использовать лучше:
Очень часто в реальных приложениях текст запроса "склеивается" из кусочков, которые поступают из разных мест. Например, пользователь выбрал в ниспадающем списке имя заказчика — и для события Change для ниспадающего списка тут же сработала процедура, которая выполнила запрос на SQL Server, получив данные для этого заказчика, и присвоила полученные значения другим элементам управления. В нашем случае соответствующая строка кода может выглядеть так: rs.Open " select * from dbo.customers Where CompanyName = " & "'" & ComboBox1.Value _ & "'" , cn Набор символов "'" — это одинарная кавычка внутри двух двойных. Такая конструкция нужна, чтобы текст запроса мог выглядеть, например, так: select * from dbo.customers Where CompanyName = 'Alfreds Futterkiste' Причина проста — в языке SQL строковые значения нужно заключать в одинарные кавычки. Если вы ответственны не только за создание клиентского приложения, но и за проектирование базы данных, бывает очень удобно предусмотреть запрос данных только через представления. Это позволит более гибко управлять системой безопасности и в случае необходимости перекройки базы данных (например, разбиения главной таблицы на текущую и архивную) сэкономить множество времени. И еще один практический момент. Конечно, для работы с базами данных знать язык запросов SQL очень полезно. Литературы по нему очень много, и его вполне реально освоить за несколько дней. Однако, если вы — обычный пользователь и не имеете об языке SQL никакого представления, ничего страшного. Просто открывайте таблицы целиком без всяких запросов — все остальное можно будет сделать средствами VBA. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|