Ця книга допоможе освоїти інтегроване середовище розробки VBA і навчитися програмувати в VBA з використання об'єктів, їх властивостей, методів і подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу ж випробувати на практиці. Отримані знання ви зможете застосувати як для настроювання й удосконалення популярний офісних додатків, включаючи додатки Office XP, так і для створення власних додатків.
Книга розрахована на тих, хто збирається швидко і без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.
Книга: VBA для чайників
Робота з об'єктами Recordset
Робота з об'єктами Recordset
Давайте ближче познайомимося з об'єктами Recordset: ви використовуєте при виконанні фундаментальних операцій з даними. Об'єкт Recordset - це контейнер, що містить дані, отримані з джерела даних. Як і належить контейнеру, один об'єкт Recordset може містити різні записи в різний час.
Після того як ви оголосили змінну для об'єкта Recordset, ви можете негайно приступити до роботи з його властивостями. Однак, в цей момент він існує тільки "віртуально". Для заповнення порожнього контейнера реальними даними вдамося до одного з наступних прийомів:
* Власний метод Open об'єкта Recordset;
* Метод Execute об'єкта Command;
* Метод Execute об'єкта Connection.
Найпростіший спосіб створення об'єкта Recordset - використання методу Open цього самого об'єкта. Метод Open добре працює в тому випадку, якщо ви використовуєте прості інструкції Select для отримання необхідних записів. Наступний фрагмент коду демонструє настройку об'єкта Recordset за допомогою метола Open:
Dim conman As New Connection
Dim rstMan As Recordset
Dim strSQL As String
(Тут міститься код, який використовується для створення об'єкта підключення conMan) strSQL = "SELECT * FROM Toys" 'вибір всієї таблиці Toys
Set rstMan.ActiveConnection = conman
rstMan.Open strSQL. adOpenForwardOnly, adLockReadOnly, _
Зверніть увагу на те, що наведений вище фрагмент коду пов'язує підключення з об'єктом Recordset за допомогою властивості ActiveConnection останнього. Крім того, зверніть увагу на те, що параметри, що керують поведінкою об'єкта, вказані в якості аргументів методу Open.
Інструкції SELECT мови SQL підходять далеко не завжди. У додатках клієнт / сервер ефективність дуже часто диктує необхідність створення об'єктів Recordset шляхом виконання процедур (запитів). Якщо подібної процедури потрібні певні параметри, в цій ситуації виявляється зручним використання об'єкта Command для створення об'єкта Recordset.
Перш за все налаштуйте об'єкт Command, присвоївши його властивості ActiveConnection значення, відповідне необхідному підключенню. Після цього ви можете приділити увагу і об'єкту Recordset. В цьому випадку ви повинні спочатку визначити параметри цього об'єкта як властивості. Після цього ви наповнюєте об'єкт Recordset записами, користуючись результатами виконання методу Execute об'єкта Command. Відповідний приклад наведено нижче:
Dim conTest As New Connection
Dim cmdTest As New Command
Dim rstTest As Recordset
Dim strSQL As String
(Код, який створює об'єкт підключення contest
і визначає рядок strSQL)
'Створення об'єкта Command:
Set .ActiveConnection = contest
Set rstTest = cmdTest.Execute ()
Останній прийом для створення об'єктів Recordset полягає в використанні методу Execute об'єкта Connection. Цей підхід набагато простіше, ніж використання об'єкта Connection, крім того, він дозволяє вам працювати з збереженими процедурами. Однак, якщо для виконання процедур необхідні певні параметри, вам доведеться включити ці параметри в інструкцію SQL. Все це проілюстровано на наступному прикладі коду:
Dim conVert As New Connection
Dim rstVert As Recordset
Dim strSQL As String
(Код, який створює об'єкт підключення conVert
і визначає рядок strSQL)
Set rstVert - conVert.Execute ()
Якщо вам відомо, що його потребує тільки для одного об'єкта Recordset, попереднє створення підключення не забезпечить ніяких переваг.
Замість цього ви можете вказати рядок підключення в якості другого аргументу методу
Open об'єкта Recordset, як показано нижче:
Dim rstInPeace As New Recordset
Dim strSQL As String, strConnect As String strSQL = "SELECT * FROM Bicycles" 'Отримання всіх записів 1 Код, що призначає рядок підключення змінної strConnect rstInPeace.Open strSQL, strConnect, adOpenForwardOnly