Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
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 Until … Loop, на каждом шаге которого осуществляется поиск записи, в которой поле «Информатика» содержит значение больше 3 (то есть 4 или 5). В текстовое окно Text3 передается значение поля «Номер» найденной записи (ключевое поле, код студента). Следующая команда – найти запись в таблице «Студенты», у которой поле «Номер» содержит то же значение, что и в таблице «Результаты»: Data1.Recordset.FindFirst " Номер=" + " ' " + S3 + " ' " Следует обратить внимание на то, как записывается условие поиска: строковая переменная S3, имеющая значение кода студента, слева и справа отделяется апострофами, каждый из которых берется в кавычки (см. аналогичную команду на стр.97). В переменную S, которой до начала цикла было присвоено значение «пустая строка», добавляется строка, составленная из значения поля Text2 (фамилия) и поля Text3 (оценка), кроме того, добавляются управляющие символы с кодами 13 и 10 («возврат каретки» и «перевод строки»). Условие окончания цикла – значение True (Истина) свойства NoMatch объекта RecordSet.
Популярное:
|
Последнее изменение этой страницы: 2016-03-17; Просмотров: 1103; Нарушение авторского права страницы