Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Open CommonDialog.FileName For Input As # 1



 

 

 


Рис.25. Диалоговое окно для открытия файла

 

Аналогично выполняется процедура сохранения файла на диск. Предположим, что надо сохранить в текстовом файле строку S. Последовательность команд может быть такой

CommonDialog1.ShowSave

Open CommonDialog1.FileName For Output As # 1

Print #1, S

Close #1

Первая команда выводит диалоговое окно (рис.26), в котором можно выбрать нужную папку и ввести имя файла в соответствующее поле.

 
 


Рис. 26. Диалоговое окно для сохранения файла

 

При нажатии кнопки «Сохранить» свойству CommonDialog1.FileNameбудет присвоено имя файла с указанием пути к нему, после чего файл будет открыт для записи.

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

 

Для установления связи между базой данных (БД) и программой на 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-03-17; Просмотров: 82; Нарушение авторского права страницы


lektsia.com 2007 - 2017 год. Все права принадлежат их авторам! (0.01 с.) Главная | Обратная связь