- •1. Операторы, процедуры, типы данных vba
- •Основные типы данных в vba
- •Преобразование типов данных
- •Is (оператор)
- •Функция IsArray
- •IsArray (Имя переменной)
- •IsDate (функция)
- •IsEmpty (функция)
- •IsError( функция)
- •IsMissing(функция)
- •IsNull (функция)
- •IsNumeric (функция)
- •IsNumeric(выражение)
- •IsObject(функция)
- •2. Работа с объектами
- •3. Применение процедур vba
- •Модель программирования в Access
- •Типы процедур
- •Поле со списком
- •Вызов процедур
- •Запуск процедур-функций
- •Запуск процедур-подпрограмм
- •4. Операторы vba
- •Логические операторы Логические операторы
- •Некоторые функции в vba
- •5. Объявление переменных, констант в vba
- •Создание пользовательских типов данных
- •Dim c As клиент
- •Cоздание массивов постоянной длины
- •Cоздание массива из списка значений
- •Создание динамических массивов
- •6.Организация ввода-вывода данных с помощью функций InputBox и MsgBox
- •7. Управляющие структуры
- •Структура If … Then
- •Структура If … Then … Else
- •Вторая группа операторов]
- •Второй блок операторов]
- •Алгоритм
- •Переход по метке
- •10: Программный код Cтруктура Select Case
- •8. Циклы в vba Cтруктура For ….Next
- •Операторы
- •Структура For Each … Next
- •Структура Do… Loop
- •Структура Do While … Loop
- •Структура Do ….While Loop
- •Cтруктуры Do Until … Loop и Do … Loop Until
- •9. Операторы Exit
- •Функции для работы со строковыми переменными
- •11. Классические задачи программирования: сортировка, поиск
- •If IsNull(массив(X)) Then Exit Function
- •12. Управление базами данных
- •Основные понятия базы данных
- •Установка значений свойств
- •Считывание свойств
- •Вызов методов
- •Объект.Метод
- •Присваивание значений возвращаемых из методов
- •13. Объект Database –база данных
- •Cвойства объекта Database
- •Методы объекта Database
- •14. Объект TableDef
- •Свойства объекта TableDef
- •Методы объекта TableDef
- •Использование свойства Fields объекта TableDef
- •Использование свойства TableDefs объекта Database
- •15. Объект Form –экранная форма Свойства объекта Form
- •Применение некоторых свойств oбъекта Form Свойство Me
- •Cвойство ActiveControl
- •Свойство CurrentRecord
- •Свойство Visible
- •Свойства OrderBy и OrderByOn
- •Методы объекта Form
- •Список и поле со списком
- •Глава 16. Объект DoCmd и его методы
- •Глава 17. Объект Recordset
- •Свойства объекта Recordset
- •Свойства bof и eof
- •Создание объекта Recordset
- •Глава 18. Применение объекта Debug
- •Глава 19. Применение свойства RecordCount
- •Применение свойства Fields
- •Применение метода GetRows объекта Recordset
- •Глава 21. Объекты QueryDef
- •Свойства объектов QueryDef
- •Использование метода Execute
- •Глава 22. Применение языка sql
- •Использование выражения select
- •Простые формы select
- •Фильтрация данных с помощью предложения where
- •Сортировка данных
- •Объединение таблиц
- •Глава 23. Объект Report События
- •Некоторые свойства объекта Report
- •Методы объекта Report
- •Применение свойств объекта Report
- •Глава 24. Настройка пользовательского интерфейса
- •Глава 25. Создание и изменение панелей команд
- •Глава 26. Создание и удаление контекстных меню
- •Приложение
- •Этапы реализации задачи:
- •If IsNull(.Fields!цена) Then Exit Do
Глава 18. Применение объекта Debug
Объект Debug полезен на этапе проектирования и отладки приложения. Он содержит два метода- Print и Assert. Метод Print позволяет отобразить содержимое элемента данных в окне отладки Immediate ( окно вызывается нажатием клавиш CTRL+G), a Assert даёт возможность приостановить выполнение программ в том случае, если выражение типа Boolean, переданное ей в качестве параметра, даёт в результате вычисления значение False.
Пример:
Просмотреть все записи в объектe Recordset.
Для перебора всех записей в наборе применим цикл Do. Переход к следующей записи используем метод MoveNext.
1.Создадим в конструкторе форму без всяких элементов управления.
По событию ОТКРЫТИЕ формы пишем программный код:
3.Открыть форму и нажать CTRL+ G для вызова окна Immediate. В окне Immediate появятся значения всех полей таблицы.

Пример :
Удалить текущую запись в таблице.
Таблица до удаления записи:

Private Sub Кнопка0_Click()
Dim basa As Database, nabor As Recordset, поля As Field, имена As String
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenTable)
nabor.Move 2 ' Устанавливаем указатель на 3-ю запись
nabor.Delete ' Удаляем её
End Sub
Результат:

Глава 19. Применение свойства RecordCount
объекта Recordset
Пример:
Определить количество записей в наборе данных, открытым для таблицы “Товары”.
Dim basa As Database, nabor As Recordset
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenTable)
MsgBox "Количество записей=" & nabor.RecordCount
Результат
работы:
Применение свойства Fields
объекта Recordset
Пример:
Определить названия полей для текущей записи в наборе данных,
открытым для таблицы “Товары”.
Dim basa As Database, nabor As Recordset, поля As Field, имена As String
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары1", dbOpenSnapshot)
For Each поля In nabor.Fields
имена = имена & поля.name & vbCr
Next
MsgBox имена
Результат:
Применение свойства AbsolutePosition
объекта Recordset
Пример:
Определить номер текущей записи в наборе данных,
открытым для таблицы “Товары”.
Dim basa As Database, nabor As Recordset
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары1", dbOpenSnapshot)
nabor.Move 2 ‘указатель записи смещаем на 2 позиции
MsgBox nabor.AbsolutePosition ‘вывод номера текущей записи

Результат:
Глава 20. Применение методов Find
Пример:
Найти первую запись в наборе данных, удовлетворяющих условию:
Цена=100 руб. из таблицы «Товары».
Таблица выглядит следующим образом:

Private Sub Кнопка0_Click()
Dim basa As Database, nabor As Recordset
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenSnapshot)
With nabor
.FindFirst "Цена=100"
MsgBox !Товар & " " & !Цена & " " & !Поставщик
End With
End Sub

Результат:
Пример:
Найти последнюю запись в наборе данных, удовлетворяющих условию:
Цена=100 руб. из таблицы «Товары», приведённой выше.
Private Sub Кнопка0_Click()
Dim basa As Database, nabor As Recordset
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenSnapshot)
With nabor
.FindLast "Цена=100"
MsgBox !Товар & " " & !Цена & " " & !Поставщик
End With
End Sub
Результат:
Пример:
Найти все записи в наборе, удовлетворяющие условию:
Цена>60
Исходная таблица:

Использование метода FindNext, который находит в наборе записей следующую, удовлетворяющую условиям и делает её текущей.
Private Sub Кнопка0_Click()
Dim basa As Database, nabor As Recordset, s As String
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenSnapshot)
With nabor
.FindFirst "Цена>60"
Do Until.NoMatch
s = s & !Товар & " " & !Цена & " " & !Поставщик & vbCr
.FindNext "Цена>60"
Loop
E
nd
With
MsgBox s
End Sub
Результат:
Использование метода FindPrevious, который находит в наборе записей предыдущую, удовлетворяющую условиям и делает её текущей.
Private Sub Кнопка0_Click()
Dim basa As Database, nabor As Recordset, s As String
Set basa = CurrentDb
Set nabor = basa.OpenRecordset("Товары", dbOpenSnapshot)
With nabor
.FindLast "Цена>60"
Do Until.NoMatch
s = s & ! Товар & " " & ! Цена & " " & !Поставщик & vbCr
.FindPrevious "Цена>60"
Loop
End With
MsgBox s
End Sub
