Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория и практические задания по ППО 2 семестр.doc
Скачиваний:
3
Добавлен:
05.05.2019
Размер:
140.8 Кб
Скачать

Задания по работе с базой данных.

Листинг 1. Открытие таблицы базы данных

Sub Открытие_таблицы()

Dim нз As Recordset

'Создание обьекта Recordset

Set нз = CreateObject("ADODB.Recordset")

'Открытие обьекта

нз.Open "Сотрудники", "db1"

MsgBox нз("Имя")

нз.Close

Set нз = Nothing

End Sub

Листинг 2. Открытие объекта «Recordset» с предварительным заданием свойств

Sub Открытие_таблицы2()

Dim нз As Recordset

'Создание обьекта Recordset

Set нз = CreateObject("ADODB.Recordset")

'Открытие обьекта

With нз

.Source = "Сотрудники"

.ActiveConnection = "db1"

.Open

End With

MsgBox нз("Адрес")

'Закрытие обьекта

нз.Close

Set нз = Nothing

End Sub

Открытие набора записей с помощью оператора «SELECT», упрощенный синтаксис оператора SELECT:

SELECT [DISTINCT] - имена_полей

FROM - имя_табпицы

WHERE - критерий

ORDER BY - имена_полей[DESC];

DISTINCT - Это необязательное ключевое слово позволяет указать, что следует возвращать только уникальные записи (т.е. те, которые не повторяются);

Имена_полей - Если необходимо, чтобы набор записей содержал только определенные поля, введите названия этих полей через запятую. Чтобы набор записей содержал все поля, введите символ «*»

FROM имя_таблицы - Название таблицы, в которой содержатся требуемые данные

WHERE критерий - Здесь можно задать критерий, после чего в набор записей попадут только те записи, которые удовлетворяют этому критерию

ORDER BY имена_полей [DESC] - Здесь можно указать, что полученные результаты следует отсортировать в возрастающем порядке на основе полей, указанных в аргументе имена_полей (если сортировка проводится по нескольким полям, то они разделяются запятыми). Чтобы отсортировать полученные записи в убывающем порядке, следует ввести (необязательное) ключевое слово desc

Примеры использования оператора SELECT :

SELECT * FROM Сотрудники WHERE Страна='Россия' RDER BY Фамилия;

SELECT Марка, Цена FROM Товары WHERE Цена < 500;

Листинг 3. Открытие объекта «Recordset» с помощью оператора «SELECT»

Sub Открытие_запроса()

Dim нз As Recordset

Dim Выбор As String

'Создание обьекта Recordset

Set нз = CreateObject("ADODB.Recordset")

'Открытие обьекта

Выбор = "SELECT * FROM Типы WHERE Категория = 'Фрукты'"

нз.Open Выбор, "db1", adOpenKeyset

MsgBox нз("Категория")

'Закрытие обьекта

нз.Close

Set нз = Nothing

End Sub

Доступ к данным из набора записей: Свойство Fields объекта Recordset.

Recordset.Fields(FieldName)

Recordset Объект типа Recordset, с которым будем работать

FieldName Строка или строковая переменная, содержащая название поля, в котором хранятся искомые данные

Например: текущий_контакт = нз.Fields("ОбращатьсяК")

Листинг 4. Извлечение данных из набора записей

Sub Данные_набора_записей()

Dim нз As Recordset

Dim Выбор As String

'Создание обьекта Recordset

Set нз = CreateObject("ADODB.Recordset")

'Открытие обьекта

Выбор = "Select * FROM Клиенты where Страна='Канада'" & "Order By Название;"

нз.Open Выбор, "db1", adOpenKeyset

MsgBox нз("ОбращатьсяК") & "," & нз("Название")

'Закрытие обьекта

нз.Close

Set нз = Nothing

End Sub

Перемещение по записям

свойство Fields возвращает данные из текущей записи.

После первого открытия набора записей текущей является первая запись.

Способы перемещения по записям, которые используются чаще всего:

Recordset.MoveFirst. Перемещает к первой записи указанного набора записей.

Recordset.MoveLast. Перемещает к последней записи объекта

Recordset.MoveNext. Перемещает к следующей записи объекта

Recordset.MovePrevious. Перемещает к предыдущей записи объекта Recordset

С помощью этих способов изменяется значение, которое указывает на текущую запись.

Две исключительные ситуации:

  • Первая запись является текущей, и вызывается метод MovePrevious.

  • Последняя запись является текущей, и вызывается метод MoveNext.

сообщение об ошибке, которое начинается со слов Either BOF or EOF is True

Recordset.bof. Возвращает значение True, если указатель находится перед первой записью объекта Recordset

Recordset.EOF. Возвращает True, если указатель находится после последней записи объекта Recordset

Чтобы избежать ошибок, в процедурах следует проводить проверку значений этих свойств.

Например,

нз.MoveNext

If нз.ЕОF Then

нз.MoveFirst

End If

метод Move - переносит указатель на заданное количество записей от текущей.

Recordset.Move MoveRecords, Start

Recordset Объект типа Recordset, с которым работаем

MoveRecords Число записей, на которое нужно переместить указатель. Положительные значения используются для перемещения вперед, а отрицательные — назад

Start Необязательный аргумент, который определяет начальную запись, начиная с которой выполняется перемещение

Аргумент Start должен включать название переменной типа Variant, которая содержит закладку. В закладке хранится расположение записи в наборе записей.

свойство Bookmark объекта Recordset – позволяет установить и просмотреть закладки - всегда указывает на текущую запись.

Пример: два оператора выполняют одно и то же действие:

нз.Bookmark = закладка

нз.Move 0, закладка

Листинг 5. Перемещение по набору записей с использованием закладки

Sub Перемещение()

Dim нз As Recordset

Dim строка_SELECT As String

Dim закладка As Variant

' Создание объекта Recordset

Set нз = CreateObject("ADODB.Recordset")

' Открытие объекта

строка_SELECT = "SELECT * FROM Клиенты"

нз.Open строка_SELECT, "db1", adOpenKeyset

' Перемещение и сохранение текущей записи как

' закладки. Вывод на экран данных.

нз.Move 3

закладка = нз.Bookmark

MsgBox нз("ОбращатьсяК") & "," & нз("Название")

' Перемещение текущей записи

нз.Move -2

MsgBox нз("ОбращатьсяК") & "," & нз("Название")

' Перемещение относительно закладки

нз.Move 5, закладка

MsgBox нз("ОбращатьсяК") & "," & нз("Название")

' Перемещение к закладке

нз.Bookmark = закладка

MsgBox нз("ОбращатьсяК") & "," & нз("Название")

' Закрытие объекта

нз.Close

Set нз = Nothing

End Sub