Работа с базой данных

 

Для установления связи между базой данных (БД) и программой на Visual Basic служит элемент управленияData, который позволяет отображать в размещенные на форме текстовые окна содержимое записей базы данных. Поддерживается связь с базами данных Access, FoxPro, dBase, Paradox.

Один элемент управления Data всегда обеспечивает доступ только к одной запи­си в данный момент (такая запись называется текущей (current)), позволяя отображать содержимое текущей записи на форме.

При работе с многотабличной базой данных для отображения полей из нескольких связанных между собой таблиц необходимо разместить на форме несколько элементов, по числу таблиц в БД. Имена этих элементов управления будут Data1, Data2и т.д.

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

На этапе конструирования формы с помощью окна свойств объектов устанавливаются связи между элементами формы и параметрами БД, а также между текстовыми полями TextBox и элементами Data, как показано на рис.27.

 

 


Рис.27. Схема связей свойств объектов Data и TextBox с параметрами БД

 

 

На этапе конструирования формы разместим на ней экземпляр объекта Data. Пусть его имя будет Data1. В окне свойств этого элемента необходимо присвоить свойству DatabaseName значение имени БД (точнее – выбрать из списка существующих), а свойству RecordSource – имя одной из таблиц этой БД.

Следующим шагом является размещение на форме текстового поля (TextBox). В окне свойств для этого элемента свойству DataSource (источник данных) необходимо присвоить имя Data1, а свойству DataField (поле данных) – название поля таблицы.

Пусть, например, имеется созданная в среде Access двухтабличная БД «Сессия» (файл Сессия.mdb в папке ИОСУ на диске Е: ). Первая таблица называется «Студенты», вторая – «Результаты».

В таблице «Студенты» содержатся коды студентов (поле «КС» – ключевое), фамилия (поле «Фамилия») и имя (поле «Имя»).

В таблице «Результаты» приведены результаты экзаменов по трем дисциплинам (поля «Информатика», «Математика» и «Физика»), кроме того имеется ключевое поле «КС».

Обе таблицы через ключевые поля связаны между собой.

Создадим проект на Visual Basic, в котором на экранной форме будет четыре поля Text1, Text2, Text3, Text4, Text5(экземпляры объекта TextBox). В первые два поля должны выводиться фамилия и имя из таблицы «Студенты», в остальные – оценки по трем дисциплинам соответствующего студента из таблицы «Результаты».

 


Рис.28. Пример формы с данными из двухтабличной БД

 

Private Sub Command1_Click() ‘ нажата кнопка «Первая»

Data1.Recordset.MoveFirst

Data2.Recordset.MoveFirst

Text1.Text = S

End Sub

 

Private Sub Command2_Click() ‘ нажата кнопка «Следующая»

If Not Data1.Recordset.EOF Then

Data1.Recordset. MoveNext

Data2.Recordset.MoveNext

End If

End Sub

 

Private Sub Command3_Click() ‘ нажата кнопка «Предыдущая»

If Not Data1.Recordset.BOF Then

Data1.Recordset.MovePrevious

Data2.Recordset.MovePrevious

End If

End Sub

 

Рис.29. Программный код для рассматриваемого примера

Для того , чтобы иметь возможность просматривать все записи БД, поместим на форму три кнопки Command1,Command2иCommand1, с надписями на них «Первая», «Следующая» и «Предыдущая». В соответствии с этими названиями нажатие кнопки будет приводить к перемещению по записям БД. Пример размещения элементов управления на форме показан на рис.28, а текст программы – на рис.29.

Следующий пример демонстрирует возможность объекта Data осуществлять выборку записей из многотабличной БД. Предположим, что в условиях предыдущего примера необходимо вывести фамилии студентов, получивших по дисциплине «Информатика» оценки не ниже четверки. Этот список нужно вывести в текстовое окно.

Поскольку здесь, как и в предыдущем примере, используются две таблицы, на форме нужно разместить два экземпляра объектаData: Data1для связи с таблицей «Студенты» и Data2 –с таблицей «Результаты». Кроме того, потребуется четыре текстовых поля: Text1и Text2для передачи содержимого полей «Номер» и «Фамилия» из таблицы «Студенты», Text3и Text4для передачи содержимого полей «Номер» и «Информатика» из таблицы «Результаты» (см. рис.30).

 

 

 


Рис.30. Вид формы в режиме конструктора

 

Еще одно текстовое окно, Text5, потребуется для вывода в него списка студентов с оценками по информатике.

В окне свойств этому окну нужно присвоить параметру MultiLine значение True. Для элементов Data1, Data2, Text1и Text2параметру Visible присвоим значение False – при открытии формы они будут невидимы.

Кроме объектов Data и TextBox, на форму поместим еще один – кнопку Command1 с надписью «Показать».

На рис.30 показана разрабатываемая форма в режиме конструктора, а на рис.31 – в режиме запуска программы.

 

 

 

 


Рис.31. Вид формы в режиме запуска программы

(после нажатия кнопки «Показать»)

 

Текст процедуры Command1_Click, запускаемой при нажатии кнопки Command1,представлен на рис.32.

 


Private Sub Command1_Click ()

Data2.Recordset.MoveFirst

S =” ”

Do Until Data2.Recordset.NoMatch

Data2.Recordset.FindNext "Информатика>3"

S3 = Text3.Text

Data1.Recordset.FindFirst "Номер=" + " ' " + S3 + " ' "

S = S + Text2.Text + " " + Text4.Text + Chr(13) + Chr(10)

Loop

Text5.Text = S

End Sub

 

 

Рис.32. Программный код

Комментарий к программе. После нажатия кнопки с надписью «Показать» запускается процедураCommand1_Click.

Вначале выполняется переход к первой записи в таблице «Результаты».

Затем организуется цикл Do UntilLoop, на каждом шаге которого осуществляется поиск записи, в которой поле «Информатика» содержит значение больше 3 (то есть 4 или 5). В текстовое окно Text3 передается значение поля «Номер» найденной записи (ключевое поле, код студента).

Следующая команда – найти запись в таблице «Студенты», у которой поле «Номер» содержит то же значение, что и в таблице «Результаты»:

Data1.Recordset.FindFirst "Номер=" + " ' " + S3 + " ' "

Следует обратить внимание на то, как записывается условие поиска: строковая переменная S3, имеющая значение кода студента, слева и справа отделяется апострофами, каждый из которых берется в кавычки (см. аналогичную команду на стр.97).

В переменную S, которой до начала цикла было присвоено значение «пустая строка», добавляется строка, составленная из значения поля Text2(фамилия) и поля Text3(оценка), кроме того, добавляются управляющие символы с кодами 13 и 10 («возврат каретки» и «перевод строки»).

Условие окончания цикла – значение True (Истина) свойства NoMatch объекта RecordSet.

 








Дата добавления: 2016-02-11; просмотров: 833;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.017 сек.