Сделай Сам Свою Работу на 5

ДОСТУП К ПОЛЯМ В ОБЪЕКТАХ RECORDSET





 

Связанные с данными элементы управления могут отображать поля текущей записи в объекте RecordSet элемента управления Data. Для обращения к полям БД в коде программы используются объекты Field набора записей RecordSet. При этом обращаться к отдельным полям можно по имени или порядковому номеру в таблице. Если элемент управления Data с именем Data1 связан с таблицей Titles БД BIBLIO, то можно обращаться к значению полю Title текущей записи с помощью любого из следующих операторов:

 

bookTitle = Datal.Recordset.Fields(O)

bookTitle = Datal.Recordset.Fields("Title")

 

Другие два свойства, представляющие интерес, - это свойство RecordCount объекта RecordSet (возвращает число записей в RecordSet) и свойство Count объекта Fields (возвращает число полей в строке RecordSet). Примеры:

 

Datal.RecordSet.RecordCount

Datal.RecordSet.Fields.Count

Для разработки приложения работы с полями БД и их загрузки в элементы управления ListBox выполним следующие действия.

1. Откроем новый проект и поместим элементы управления ListBox и Data в форму (рис. 6).

2. Установим свойство Visible элемента управления Data в False. Нельзя использовать элемент управления Data для перемещения по RecordSet после того как все записи отображены в элементе управления ListBox.



3. Присвойте свойствам DatabaseName и RecordSource элемента управления Data имена любых таблиц БД BIBLIO.

 

Рис 6. Приложение загружает поля RecordSet в элемент управления ListBox

 

4. Введем следующий код в событие Load формы

Private Sub Form_Load()

Dim i As Integer

Data1.Refresh

Data1.Recordset.MoveLast

Data1.Recordset.MoveFirst

For i = 1 To Data1.Recordset.RecordCount

List1.AddItem Data1.Recordset.Fields(1)

Data1.Recordset.MoveNext

Next

End Sub

При запуске этого приложения элемент управления ListBox заполняется значениями из второго поля таблицы. Метод Refresh вызывается перед использованием свойств элемента управления Data и заставляет элемент управления Data читать RecordSet из БД. Когда объект RecordSet только создан или обновлен ему неизвестно сколько в нем записей. Чтобы узнать общее количество записей, необходимо перейти на последнюю запись с помощью метода MoveLast. После вызова этого метода для определения числа строк в RecordSet используется свойство RecordCount.

Запись в таблице можно быстро найти по значению индексного поля с помощью метода Seek объекта RecordSet. Этот метод чрезвычайно “быстр”, поскольку используется индекс и поиск записи выполняется в отсортированном списке. Метод Seek имеет следующий синтаксис:



 

Seek operator, key

 

Здесь параметр operator может представлять одну из следующих операций отношения: = ; > ; < ; >= ; <=. Параметр key - это значение, сравниваемое с ключевым полем индекса. Если индекс создан на основе одного поля, то key - одиночное значение, если на основе нескольких полей, то параметр key содержит несколько значений, разделенных запятыми.

Например, если таблица Titles проиндексирована по ISBN, то поиск наименования книги, имеющей ISBN =1-5676145-0-7 выполняется следующим образом:

 

Data.Recordset.Seek "=" , "1-5676145-0-7"

 

Метод Seek значительно “быстрее”, чем метод Find, но менее гибкий. Он эффективен, если поиск записей выполняется по одному индексированному полю. Метод Find имеет место при выполнении поиска с использованием нескольких полей или оператора LIKE.

Приложение ManyTbls (проект с несколькими таблицами) демонстрирует использование метода Seek для быстрого поиска записей с помощью первичных ключей (рис. 7). Это приложение объединяет все таблицы в БД BIBLIO, чтобы отобразить названия книг вместе с именами авторов, издателей и сопутствующей информацией (комментарии и описания).

Рис. 7. Приложение Manytbls

 

Данное приложение эффективней разработать с использованием SQL-запросов, которые будут рассмотрены в разделе 4. Данный пример предназначен только для демонстрации принципа использования метода Seek.

При перемещении по названиям книг (с помощью кнопок элемента управления Data таблицы Titles) программа отображает заголовок книги в первом текстовом поле формы, а поля Comments и Subject - в соответствующих им текстовых полях. Эти текстовые поля непосредственно связаны с элементом управления Data формы.



Чтобы отображать сведения об издателе, приложение использует поле PubID (ID издателя) таблицы Titles как ключ к таблице Publishers (Издатели), в которой оно находит (с помощью метода Seek) запись с таким же значением PubID.

Для отображения имени автора приложение использует поле ISBN, чтобы найти соответствующую запись в таблице Title Author (Авторы книги). Когда эта запись найдена, для поиска имени автора программа использует поле AuID как ключ к таблице Authors (Авторы). Код для выполнения этих действий находится в обработчике события Reposition (перемещение) элемента управления Data, которое вызывается каждый раз, когда пользовательнажимает одну из кнопок перемещения для перехода на другую запись в таблице Titles.

Приложение использует все четыре таблицы БД, следовательно, ему необходимы и четыре объекта RecordSet - по одному на каждую таблицу. При проектировании формы на ней устанавливается четыре элемента управления Data (рис. 8.), но только одинизних видим во время выполнения приложения (рис. 8). Это RecordSet таблицы TITLES.

Рис. 8. Приложение Manytbls в процессе проектирования.

Для разработки приложения ManyTbls выполните следующие действия.

1. Создайте новый проект и разместите элементы управления Label и TextBox так, как изображено на рис. 8.

2. Поместите в форму четыре элемента управления Data: TITLES, PUBLISHERS, AuthorISBN и Authors. Задайте в их свойствах DatabaseName путь к БД BIBLIO.

3. Каждый элемент управления Data должен видеть свою таблицу БД. Для этого свойствам RecordSource всех этих элементов устанавливаются значения, приведенные в табл. 7.

 

Таблица 7. Значения свойства RecordSource элементов управления Data

Имя элементов управления Data Значение свойства RecordSource
TITLES Titles
PUBLISHERS Publishers
AuthorISBN Title Author
Authors Authors

 

4. Cвяжите текстовые поля с соответствующими полями элементов управления Data. Примеры некоторых из них:

• текстовое поле, в котором отображается название книги, с полем Title элемента управления Data TITLES.

• текстовое поле, в котором отображается имя издателя, с полем Publisher элемента управления Data PUBLISHERS.

• текстовое поле, в котором отображается имя автора, с полем Author элемента управления Data Authors.

Можно открыть приложение ManyTbls в среде разработки Visual Basic и посмотреть, как различные элементы управления, связанные с данными, подключены к элементам управления Data. На этом этапе можно объединять любое название книги с любым автором и любым издателем, потому что все элементы управления Data не соединены и могут быть размещены как угодно в соответствующих таблицах.

Для соединения элементов управления применим метод Seek элемента управления Data, поэтому необходимо использовать первичные индексы таблиц. Целесообразно это выполнить при загрузке формы

5. Введите следующий код в обработчик событий Load формы

 

Private Sub Form_Load()

PUBLISHERS.Refresh

AuthorISBN.Refresh

Authors.Refresh

PUBLISHERS.Recordset.Index = "PrimaryKey"

AuthorISBN.Recordset.Index = "ISBN"

Authors.Recordset.Index = "PrimaryKey"

End Sub

Чтобы открыть индексный файл для таблицы объекта RecordSet типа Table, необходимо назначить имя индекса свойству Index объекта RecordSet. Когда свойству Index назначено значение, то все вызовы Seek по отношению к RecordSet используют этот индекс.

6. Ведите следующий код в обработчик события Reposition элемента управления Data с именем TITLES:

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.