- •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
11. Классические задачи программирования: сортировка, поиск
Пример
Сортировка методом “пузырьков”.
1. Функция для сортировки:
Public Function сортировка(массив() As Variant) As Boolean
Dim a As Boolean, t As Variant, x As Integer
For x = LBound(массив) To UBound(массив)
If IsNull(массив(X)) Then Exit Function
Next x
Do
a = False
For x = UBound(массив) To (LBound(массив) + 1) Step -1
If массив(x - 1) > массив(x) Then
t = массив(x - 1)
массив(x - 1) = массив(x)
массив(x) = t
a = True
End If
Next x
For x = (LBound(массив) + 1) To UBound(массив)
If массив(x - 1) > массив(x) Then
t = массив(x - 1)
массив(x - 1) = массив(x)
массив(x) = t
a = True
End If
Next x
Loop While a
сортировка = True
End Function
2.Создадим форму с двумя текстовыми полями и кнопкой и по событию Нажатие кнопки пишем процедуру для вызова этой функции:
Private Sub Кнопка0_Click()
Dim массив() As Variant
Dim test As Boolean
массив = Array(4, 12, 3, 7, 9, 1) ‘задание массива
For i = LBound(массив) To UBound(массив) ‘ печать исходного массива
s = s & массив(i) & " "
Next i
Поле1.Value = s
test = сортировка(массив) ‘ вызов функции “Сортировка”
s = " "
For i = LBound(массив) To UBound(массив) ‘ печать результата
s = s & массив(i) & " "
Next i
Поле3.Value = s
End Sub
Результат:
Пример
Быстрая сортировка
Алгоритм такой сортировки очень элегантен за счёт рекурсивного вызова функции.
Пишем функцию для быстрой сортировки:
Public Function быстро(массив() As Variant, k As Long, p As Long)
Dim i As Long, j As Long
Dim x, y AS single
i = k
j = p
x = массив((k + p) / 2)
Do While (i <= j)
Do While (массив(i) < x And i < p)
i = i + 1
Loop
Do While (x < массив(j) And j > k)
j = j - 1
Loop
If (i <= j) Then
y = массив(i)
массив(i) = массив(j)
массив(j) = y
i = i + 1
j = j - 1
End If
Loop
If (k < j) Then быстро массив, k, j ‘ Рекурсивный вызов функции
If (i < p) Then быстро массив, i, p
End Function
По нажатию кнопки пишем процедуру:
Private Sub Кнопка0_Click()
Dim массив() As Variant
Dim test As Boolean
массив = Array(4, 12, 3, 7, 9, 1)
For i = LBound(массив) To UBound(массив)
s = s & массив(i) & " "
Next i
Поле1.Value = s
Call быстро(массив, LBound(массив), UBound(массив)) ‘ вызов функции
s = " "
For i = LBound(массив) To UBound(массив)
s = s & массив(i) & " "
Next i
Поле3.Value = s
End Sub
Задачи поиска рассматривались выше.
При работе с объектами задачи сортировки теряют свою актуальность, так как можно использовать объект список (ListBox) и метод Sort.