Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DAO new materials and examples.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
180.74 Кб
Скачать

Пример 3

Function SQLSortFilter()

Dim db As Database, rst As RecordSet, strSQL As String

Set db As CurrentDB()

strSQL = "SELECT * FROM Фамилии

WHERE Отдел = 3 Order By Фамилия"

Set rst =db.OpenRecordSet(strSQL)

Do Until rst.Eof

Debug.Print rst!Фамилия

rst.MoveNext

Loop

End Function

Здесь также используется запрос на языке SQL для формирования объекта RecordSet. При этом сам запрос, а не переменная, указывающая на него, размещается на месте аргумента метода OpenRecordset. В запросе используются условие отбора записей (Отдел = 3) и сортировка записей по полю Фамилия в возрастающем порядке (Order By Фамилия). Пусть, например, таблица Фамилии имеет вид:

Код

Отдел

Фамилия

1

2

Петухов

2

3

Уточкин

3

3

Гусаков

В окне отладки появится сообщение: ? SQLSortFilter() Гусаков Уточкин

Пример 4

Function DAOSort()

Dim rst As RecordSet, rstSort As RecordSet, db As Database

Set db = DBEngine.WorkSpaces(0).Databases(0)

Set rst = db.OpenRecordset ("Фамилии",Db_Open_Dynaset)

rst.Sort = "Фамилия"

Set rstSort = rst.OpenRecordSet()

Debug.print "Неотсортированный список:"

Do until rst.Eof

Debug.Print rst!Фамилия

rst.MoveNext

Loop

Debug.Print "Сортировка по фамилии:"

Do Until rstSort.Eof

Debug.Print rstSort!Фамилия

RstSort.MoveNext

Loop

End Function

Запуск процедуры можно организовать с помощью кнопки на форме, имеющей свойство "Нажатие кнопки", равное выражению "=DaoSort()".

Набор данных rst в данном примере образуется на основе объекта Database. Метод OpenRecordSet в данном случае имеет 2 аргумента. Первый аргумент указывает на таблицу Фамилии, данные которой образуют набор Recordset. Второй аргумент - константа Db_Open_Dynaset - определяет набор как динамический.

Свойству набора Sort присваивается имя поля Фамилия, по которому производится сортировка в возрастающем порядке. Для осуществления сортировки создается второй набор strSort типа RecordSet на основе первого набора с учетом значения свойства Sort.

Если таблица Фамилии имеет всего один столбец, то можно, например, получить в окне отладки:

? DAOSort()

Неотсортированный список:

Овечкин

Козлов

Баранов

Сортировка по фамилии:

Баранов

Козлов

Овечкин

Пример 5

Sub Замена()

Dim db As Database, rst As RecordSet

Set db = DBEngine.WorkSpaces(0).Databases(0)

Set rst = db.OpenRecordset ("Расписание экзаменов", Db_Open_Table)

rst.Index = "Предмет"

rst.MoveFirst

Do Until rst.Eof

If rst![Название предмета] = "Информатика" Then

rst.Edit

rst![Название предмета] = "Информационные технологии"

rst.Update

End If

rst.MoveNext

Loop

rst.Close

End Sub

В данном примере используется набор данных rst табличного типа (при создании объекта RecordSet использована константа Db_Open_Table). Это позволяет использовать для упорядоченного просмотра таблицы "Расписание экзаменов" свойство Index. Этому свойству присваивается имя существующего индекса "Предмет". Заметим, что если нет подходящего готового индекса, его можно создать методом CreateIndex.

В цикле Do…Loop осуществляется редактирование записей.

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

  1. переместиться на нужную запись;

  2. применить метод Edit для подготовки текущей записи к изменению. Подготовка заключается в помещении записи в специальный буфер редактирования;

  3. внести необходимые изменения в запись;

  4. применить метод Update для сохранения изменений в текущей записи.

Если не применить метод Update, новые данные будут потеряны. Если не применить метод Edit перед попыткой изменить значение текущей записи, то произойдет ошибка стадии выполнения.

В результате выполнения процедуры Замена в таблице "Расписание экзаменов" название предмета "Информатика" будет заменено на "Информационные технологии".

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]