Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MS_VB_dop_vozm_5_04.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
1.64 Mб
Скачать
    1. Объект Recordset

Как было сказано в разделе 7.1, свойство Recordset элемента Data, является объектом [1] с целым набором свойств и методов. Рассмотрим их.

Свойства объекта Recordset:

  • AbsolutePosition – содержит порядковый номер текущей записи в наборе данных (все записи нумеруются, начиная с 0).

  • RecordCount – содержит количество записей в наборе данных.

Например, выражение Data1.Recordset. RecordCount определит число записей в текущей таблице, к которой получен доступ.

  • BOF (Beginning Of File – признак начала набора данных).

  • EOF (End Of File – признак конца набора данных).

Свойство BOF равно True, если указатель текущей позиции в наборе данных расположен до первой записи. Свойство ЕOF равно True, если указатель текущей позиции в наборе данных расположен за существующими данными. Если любое из этих свойств равно True, то текущая запись имеет недопустимый номер. Если оба свойства равны True, то в наборе данных не содержится данных.

Методами объекта Recordset являются:

  • AddNew – переводит набор данных в состояние вставки новой записи;

  • Edit – переводит набор данных в состояние редактирования текущей записи;

  • Delete – удаляет текущую запись;

  • MoveFirst - переход на первую запись;

  • MoveLast - переход на последнюю запись;

  • MoveNext - переход на следующую запись;

  • MovePrevious - переход на предыдущую запись;

  • Update - запись в базу данных отредактированной записи;

  • FindFirst параметр - поиск первой записи для заданного условия поиска;

  • FindNext параметр - поиск следующей записи для заданного условия поиска;

  • FindLast параметр - поиск последней записи для заданного условия поиска;

  • FindPrevious параметр - поиск предыдущей записи для заданного условия поиска.

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

Dim Criteriy As String

Criteriy = "Поставщик = 'Меркурий' " ‘значение поля

«Поставщик» таблицы «Поставщики» должно быть равно

«Меркурий»

Criteriy = "Стоимость > 1000 And Стоимость < 2000 "

значение поля «Стоимость» таблицы «Товары на складе»

должно лежать в диапазоне от 1000 до 2000

Criteriy = "Название =" & "'" & Poisk & "'" ‘значение поля

«Название» таблицы «Товары на складе» должно быть

равно значению переменной Poisk

Следует обратить внимание на то, что задаваемое значение (строковая константа) в условиях заключается в апострофах (символ - '). В последнем примере эти апострофы специально задаются.

Как было сказано выше, ссылаться на свойства объекта Recordset, создаваемого элементом управления Data, можно только используя свойство Recordset самого элемента Data. Таким образом, при использовании перечисленных методов используется свойство Recordset элемента Data.

Например:

Data1.Recordset.MoveLast ‘перейти к предыдущей записи

Data1.Recordset.MoveNext ‘перейти к следующей записи

Data1.Recordset.FindFirst Criteriy найти первую запись,

удовлетворяющую критерию поиска

При использовании методов поиска записей применяется также свойство NoMatch. Синтаксис использования свойства следующий:

Имя_Объекта.NoMatch

Свойство принимает значение True (требуемая запись не найдена) или False (требуемая запись найдена). Если поиск оказался безрезультатным, то свойство имеет значение True, и положение текущей записи (в момент применения одного из указанных выше методов поиска) не меняется.

Пример 7.2. Для иллюстрации методов объекта Recordset модифицируем приведенную в примере 7.1 форму, добавив в нее командные кнопки навигации и поиска и текстовую строку (рис. 7.4). Свойству Visible для элемента управления Data присвоим значение False (т.е. на этапе выполнения окно Data невидимо и его нельзя использовать для доступа к базе данных).

Функции движения по записям базы данных, действий с записями, поиска программируются процедурами обработки событий соответствующих командных кнопок.

Рис. 7.4 Форма с командными кнопками для навигации по БД

Значение для критерия поиска требуемой записи вводится в текстовом окне. Поиск выполняется по нажатию на командную кнопку «Поиск» или клавишу «Enter». Отрицательный результат поиска также выводится в этом текстовом окне. Поиск удачен при полном совпадении введенного значения и значения поля «Название». В процедурах используются выше рассмотренные свойства и методы. Обратите внимание, что элемент Data на форме не виден.

Ниже приведен исходный текст данной программы.

Option Explicit

Private Sub NextBtn_Click()

'Переход к следующей записи

PrevBtn.Enabled = True

FirstBtn.Enabled = True

Data1.Recordset.MoveNext

If Data1.Recordset.AbsolutePosition = _

Data1.Recordset.RecordCount - 1 Then

NextBtn.Enabled = False

LastBtn.Enabled = False

End If

End Sub

Private Sub PrevBtn_Click()

'Переход к предыдущей записи

NextBtn.Enabled = True

LastBtn.Enabled = True

Data1.Recordset.MovePrevious

If Data1.Recordset.AbsolutePosition = 0 Then

PrevBtn.Enabled = False

FirstBtn.Enabled = False

End If

End Sub

Private Sub FirstBtn_Click()

'Переход в начало БД

Data1.Recordset.MoveFirst

NextBtn.Enabled = True

LastBtn.Enabled = True

PrevBtn.Enabled = False

FirstBtn.Enabled = False

End Sub

Private Sub LastBtn_Click()

'Переход в конец БД

Data1.Recordset.MoveLast

NextBtn.Enabled = False

LastBtn.Enabled = False

PrevBtn.Enabled = True

FirstBtn.Enabled = True

End Sub

Private Sub DelBtn_Click()

'Удаление записи

Data1.Recordset.Delete

Data1.Refresh

NextBtn_Click

End Sub

Private Sub AddBtn_Click()

'Добавление записи

Data1.Recordset.AddNew

Data1.Recordset.Update

Data1.Refresh

Data1.Recordset.MoveLast

End Sub

Private Sub Form_Load()

'При загрузке формы выполняется эта процедура

PrevBtn.Enabled = False

FirstBtn.Enabled = False

End Sub

Private Sub FindBtn_Click()

'Нажатие на кнопку "Поиск"

FindEdt_KeyPress (13)

End Sub

Private Sub FindEdt_KeyPress(KeyAscii As Integer)

'При нажатии на клавиатуре символа, выполняется эта процедура

Dim FindCriteriy As String

If KeyAscii = 13 Then ' если нажали на "Enter", то выполнить

поиск

FindCriteriy = "Название =" & "'" & FindEdt.Text & "'"

Data1.Recordset.MoveFirst

Data1.Recordset.FindFirst FindCriteriy

If Data1.Recordset.NoMatch Then

FindEdt.Text = "Такой записи нет"

Else

NextBtn.Enabled = True

PrevBtn.Enabled = True

FirstBtn.Enabled = True

LastBtn.Enabled = True

If Data1.Recordset.AbsolutePosition = 0 Then

PrevBtn.Enabled = False

FirstBtn.Enabled = False

End If

If Data1.Recordset.AbsolutePosition = _

Data1.Recordset.RecordCount - 1 Then

NextBtn.Enabled = False

LastBtn.Enabled = False

End If

End If 'NoMatch

End If 'KeyAscii

End Sub

В рассмотренных примерах база данных, необходимые таблицы и поля записей определялись на этапе разработки приложения. Причем Visual Basic позволяет открывать при работе некоторого приложения любую существующую в компьютере базу данных, определять состав ее таблиц и записей и выводить для анализа всю таблицу или информацию из нее по запросу (такой способ подключения к базе данных на этапе выполнения приложения называется динамическим доступом).

    1. Наборы

Для дальнейшего изложения рассмотрим еще одно понятие – наборы. Набор – это несколько связанных объектов, для которых определены общие свойства. Общим для всех наборов является свойство Count, определяющее число объектов в наборе (аналогично индексации элементов массива индексы объектов в наборе имеют значения от 0 до Count - 1). Обращаться к элементам набора можно или с использованием индекса, или по именам.

Например:

Data1.Recordset.Fields(«Name»)

Data1.Recordset.Fields(0)

В первом случае используется имя «Name» для обращения к нужному объекту набора Fields. Во втором случае применяется индекс для обращения к первому элементу этого набора.

В приведенных примерах используется уже рассмотренный способ определения свойств одного объекта через свойства другого (объект1.свойствоА.свойствоБ - определяет свойствоБ некоторого объекта, адресуемое через свойствоА объекта1).

Рассмотрим некоторые наборы, объекты набора и их свойства, которые используются для анализа структуры базы данных, подключаемой к приложению элементом управления Data, и выбора из нее информации.

Свойство Database возвращает ссылку на базу данных, определенную элементом управления Data. Синтаксис: Объект.Database.

Свойство Name возвращает имя объекта. Синтаксис: Объект.Name.

Например, для используемого выше элемента управления Data с именем Data1 выражение

Data1.Database.Name

определит файл базы данных.

Свойство TableDefs определяет набор таблиц базы данных (объект TableDef является одной присоединенной таблицей набора).

Например, выражение

Data1.Database.TableDefs.Count

определит число таблиц в базе данных.

Выражение

Data1.Database.TableDefs(0).Name

определит имя первой таблицы в базе данных.

Свойство Fields определяет набор полей присоединенной таблицы базы данных (объект Field является одним элементом - полем присоединенной таблицы из набора полей).

Выражение

Data1.Database.TableDefs(0).Fields.Count

определит число полей в первой таблице базы данных.

Выражение

Data1.Database.TableDefs(1).Fields(0).Name

определит имя первого поля второй таблицы присоединенной базы данных.

Выражение

Data1.Recordset.Fields.Count

определит число полей таблицы, к которой получен доступ.

Выражение

Data1.Recordset.Fields(2).Name

определит имя третьего поля текущей таблицы.

Выражение

Data1.Recordset.Fields(2).Value

определит значение третьего поля текущей записи на множестве данных.

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