Использование функций для обработки событий

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

ecordCount (поскольку свойство RecordCount не всегда совпадает с общим числом записей в наборе, то рассматриваемое свойство не всегда возвращает верное число).

 

 

Поиск записей в объекте Recordset.

 

Методы поиска записей в наборе зависят от типа набора записей. Для объектов Recordset типа Таблица используется метод Seek, а для статического или динамического наборов группа методов Find. Для DAO для статического набора с последовательным доступом поиск не поддерживается вообще.

Seek использует индексы таблицы, на основе которой создан объект Recordset (в DAO его можно использовать только для объектов Recordset типа Таблица). Если поиск не был успешным, то в модели DAO текущая запись не определена.

 

Применение методов Find.

 

Для DAO определены:

FindFirst ищется первая запись, удовлетворяющая заданным условиям.

FindLast ищется последняя запись, удовлетворяющая заданным условиям.

FindNext ищется следующая запись, удовлетворяющая заданным условиям.

FindPrevious ищется предыдущая запись, удовлетворяющая заданным условиям.

Каждый из этих методов имеет один аргумент, задающий условия поиска (строится по правилам опции Where в инструкции SQL). Результат поиска отображается в значении свойства NoMatch объекта Recordset. При успешном поиске NoMatch имеет значение FALSE, а при неудаче TRUE.

 

Каждый из методов Find начинает поиск с разных точек в разных направлениях.

FindFirst начинает работу с начала набора и к концу.

FindLast с конца к началу.

FindNext от текущей записи и к концу.

FindPrevious от текущей записи и к началу.

 

Примечание:

В VBA допускается использование и динамических массивов, размеры которых при описании не фиксируются. Определение размера динамического массива может быть сделано непосредственно во время выполнения программы. При определении динамического массива в операторе Dim после имени массива стоят лишь пустые скобки и описание типа переменных. Количество индексов и диапазон их изменения не задаются. Однако перед тем, как использовать массив, нужно выполнить оператор ReDim, который задаст размерность и диапазоны изменения индексов динамического массива.

Синтаксис объявления и определения размеров динамического массива таков:

Dim

ReDim ] . . . )

Более того, можно неоднократно использовать оператор ReDim для изменения размерности оного и того же массива. Однако, так как при изменении размерности массива для него заново выделяется память, то текущие значения его элементов теряются. Чтобы их сохранить при перераспределении размерности, используется ключевое слово Preserve. В этом случае можно поменять только последний аргумент, задающий размерность массива.

 

…………………………………………………………………..

Private Sub cmdFind_Click()

 

Dim str As String

 

Dim db As Database

Dim rs As DAO.Recordset

Dim i As Integer

Set db = CurrentDb

Set rs = db.OpenRecordset("Вакансии ", dbOpenSnapshot)

 

……………………………………………………………………

 

If rs.RecordCount = 0 Then

MsgBox "Вакансии отсутствуют"

Exit Sub

End If

 

Поиск имя формы, а txtWho имя поля для ввода вакансии

 

str = "Должность ='" & Forms!Поиск!txtWho & "'"

 

rs.FindFirst str

 

If rs.NoMatch Then

MsgBox "Вакансии отсутствуют"

Exit Sub

Else

ReDim Preserve IdList(i)

IdList(i) = rs!Код

 

 

…………………………………………………………………

 

Do Until rs.EOF

 

rs.FindNext str

If rs.NoMatch = False Then

i = i + 1

ReDim Preserve IdList(i)

 

Код обработки данных

IdList(i) = rs! Код

…………………………………………………………………

End If

rs.MoveNext

Loop

End If

rs.Close

db.Close

End Sub

 

Задание №3

Усовершенствуем форму РезультатыПоиска, добавив возможность просмотра списка сотрудников по вводимым должностям. Рис. 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Добавить на форму кнопку с надписью Поиск по должностям и список для вывода сотрудников. Нажатие кнопки приводит к поиску соответствующих записей и отображению в списке табельных номеров и фамилий сотрудников.

 

 

Применение метода Seek.

 

Метод Seek используется для объекта Recordset табличного типа. Он выполняет поиск нужной записи с использованием индекса. Поэтому перед выполнением поиска нужно указать существующий индекс, который нужно использовать (текущий индекс).

 

 

Синтаксис метода для объектной модели DAO:

 

Таблица.Seek сравнение, ключ1, ключ2, … ключn

 

 

 

 

 

 

Аргументы ключ те значения, которые нужно найти. Количество аргументов определяется количеством полей в индексе и совпадает с порядком в нем. Данный метод позволяет найти только первую запись, удовлетворяющую заданному критерию, даже если их несколько. Поэтому его используют для быстрого поиска записи по ключу.

 

В примере представлена процедура, которая ищет данные о