- •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
Список и поле со списком
Список и поле со списком являются элементами управления формы. Объявляются они соответственно - ListBox и ComboBox.
Свойства списка и поля со списком как элементов управления
Свойство |
Доступ |
Возвращаемое значение |
Описание |
ListCount |
Только чтение |
Integer |
Определяет число строк в списке элемента управления. |
Listlndex |
Только чтение |
Integer |
Определяет, какой элемент списка элемента управления выбран. |
Selected |
Чтение и запись |
Массив с нумерацией от нуля |
Выбирает элемент или определяет, выбран ли элемент списка. (Только для элементов управления Listbox). |
Методы элементов управления ComboBox и ListBox
Метод |
Описание
|
DropDown
|
Принудительно раскрывает список. (Только для полей со списком). |
ItemData
|
Возвращает данные в связанном столбце указанной строки списка или поля со списком. Синтаксис вызова: элемент_управления.ItemDата(номер_строки), где элемент_ управления — ссылка на элемент управления, номер_ строки — строка, содержащая нужные данные, Нумерация строк начинается с нуля.
|
Семейство ItemsSelected
В стандартном списке можно выбрать лишь один элемент; однако использование свойства MultiSelect (несвязное выделение) позволяет выбрать и несколько элементов. Текущая строка списка выделяется точечной пунктирной рамкой. Свойство MultiSelect может принимать следующие значения:
None (отсутствует) - Выделение одного элемента. Для выделения элемента в списке следует щелкнуть на нем или подвести к нему указатель элемента с помощью клавиш перемещения курсора. При выделении новой записи с предыдущей записи выделение автоматически снимается. После выбора строки единственный способ снять выделение заключается в том, чтобы выделить другую строку.
Simple (простой) - Выделение нескольких элементов путем выбора каждого элемента. Для выделения элемента следует щелкнуть на нужной строке. Выделение можно снять, щелкнув на выделенном элементе вторично.
Extended (со связанным выбором) - Выделение блока из нескольких элементов. После выбора первого элемента область выделения можно расширить тремя способами:
• Нажать левую кнопку мыши и, удерживая ее, протащить мышь до другой строки.
• Нажать клавишу Shift и, удерживая ее, щелкнуть на другой строке.
• Нажать клавишу Shift и, удерживая ее, нажать какую-либо клавишу перемещения курсора.
В каждом случае выделяется блок последовательных элементов от первого выделенного до текущего элемента. После выделения блока можно дополнительно выделить любой элемент списка (или снять выделение с любого выделенного элемента), щелкнув на нем мышью при нажатой клавише Ctrl.
При выделении нескольких элементов в списке Access создает семейство ItemsSelected. Каждый член этого семейства представляет собой целое число, обозначающее выделенную строку списка. Несмотря на то, что члены семейства ItemsSelected являются целочисленными - по умолчанию для них установлен тип Variant. У этого семейства нет методов и имеется только свойство Count, которое возвращает число выделенных элементов.
При работе со списком, допускающим множественный выбор, у строки может быть два индекса:
индекс, обозначающий ее положение в списке;
индекс (называемый также номером элемента), обозначающий ее положение в семействе ItemsSelected.
Значения обоих индексов отсчитываются от нуля. Для определения позиции строки в списке можно использовать свойство ListIndex списка. При выборе строки в списке с множественным выбором Access автоматически присваивает ей номер элемента. Так как нумерация в семействе ItemsSelected начинается с нуля, первый выбранный элемент обозначается ItemSelected(0), второй — ItemSelected(l) и т.д. Если первый выделенный
элемент — первая строка списка (с индексом равным 0), то ItemSelected(0) возвращает 0.
ListIndex ItemSelected
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
|
|
1
2
3 1
4
5 2
6
7
8
9
Если второй выделенный элемент — четвертая строка списка (с индексом равным 3), то ItemSelected(0) возвращает 3.
Как свойство Listlndex, так и семейство ItemsSelected возвращают порядковый номер строки в списке. Если нужно получить доступ к данным в этой строке, воспользуйтесь свойством Column или методом ItemData. Метод ItemData возвращает данные из присоединенного столбца в строке с указанным номером. С помощью свойства Column можно получить доступ к данным из определенного столбца в строке с указанным номером.
Пример
Создадим форму с элементами управления: список на основе таблицы «Клиент» (поля – Клиент, Адрес, Телефон, №счета). Вывести на печать значения столбцов выбранных строк.
Для того чтобы в списке можно было выбирать более одной строки, нужно установить значение Несвязное выделение – Простое.
Делается это следующим образом:
Свойства поля Список/Другие /Несвязанное выделение/Простой.
Форма и в ней список с выбранными значениями выглядит так:
По событию Нажатие кнопки пишем процедуру:
Private Sub Кнопка2_Click()
Dim spisoc As ListBox, i As Variant
Set spisoc = Me.Список0
If spisoc.ItemsSelected.Count > 0 Then
For Each i In spisoc.ItemsSelected
Debug.Print i
Debug.Print spisoc.Column(0, i), spisoc.Column(1, i), spisoc.Column(2, i), spisoc.Column(3, i)
Next i
Else
Debug.Print "Список пустой"
End If
End Sub
В окне отладки появятся следующие значения:
Переменная выводит на печать в окно отладки номера выбранных записей.
Пример:
Рассмотрим работу метода ItemData :
Private Sub Кнопка2_Click()
Dim spisoc As ListBox, i As Variant
Set spisoc = Me.Список0
Debug.Print spisoc.ItemData(7)
End Sub
Форма используется из примера, рассмотренного выше.
Результат работы: