- •Федеральное агенство по образованию
- •Оглавление
- •Часть I
- •Часть II
- •Часть I
- •Лабораторная работа 1(2). Применение форм.
- •DoCmd.OpenForm "Номера групп"
- •Лабораторная работа 2(1) Создание и использование запросов с использованием vba.
- •Лабораторная работа 2(2). Создание и использование запросов.
- •Лабораторная работа №3. Создание отчетов.
- •Ход работы
- •Лабораторная работа №4. Разработка приложения на Visual Basic для ведения однотабличной бд.
- •Лабораторная работа №5 обработка нормализованной многотабличной структуры бд.
- •Лабораторная работа №6. Создание многостраничного web-приложения
- •Задание 1. Создайте новую базу данных.
- •Задание 2. Создание проекта и формы SwitchBoard
- •Создание нового приложения и Web-формы SwitchBoard
- •Задание 3. Добавление компонентов, необходимых для работы с бд.
- •Добавление к приложению компонентов для работы с бд
- •Создание Web-формы для ввода данных AddContact
- •Создание Web-формы Calls
- •Часть II
- •3. Создание файла таблицы данных
- •4. Разработка приложения для работы с таблицей данных
- •5. Структура проекта приложения
- •6. Пример реализации бд о студентах
- •7. Контрольные вопросы
- •8. Требования к отчёту
- •9. Перечень заданий
- •Лабораторная работа №2 создание windows-приложения для работы с базой данных. Генерация отчетов.
- •1. Порядок выполнения работы
- •2. Обработка информации однотабличной базы данных
- •3. Печать данных
- •4. Пример реализации программы расчёта средней оценки
- •4. Контрольные вопросы
- •5. Требования к отчёту
- •Лабораторная работа №3 обработка информации базы данных, имеющей структуру «master-detail». Изучение основ sql.
- •1. Порядок выполнения работы
- •2. Основные сведения о ссылочной целостности. Задание индексов.
- •3. Задание псевдонимов в bde Administrator.
- •4. Установка связей между компонентами и бд. Создание меню.
- •5. Поиск данных.
- •6. Контрольные вопросы
- •7. Требования к отчёту
- •Лабораторная работа №4
- •3. Управление базами данных
- •4. Язык баз данных sql
- •5. Хранимые процедуры
- •6. Связь бд с приложением
- •7.1 Создание mdi интерфейса
- •7.2 Создание модуля данных
- •7.3 Вызов дочерней формы
- •7.4 Форма «Студенты»
- •If q_Spr.State in[dsedit,dsinsert] then q_Spr.Post ; // выход из режима редактирования
- •If q_Spr.UpdatesPending then // если были изменния
- •If MessageDlg('Несохраненные данные будут потеряны. Закрыть? ',
- •7.5 Форма Журнал (j_Ved)
- •7.6 Форма Ведомость (Ved)
- •7.7 Отчет об успеваемости (Rep)
- •8. Контрольные вопросы
- •9. Требования к отчёту
- •Рекомендации к выполнению курсовоГо проекта по дисциплине «Базы данных»
- •Варианты заданий:
- •Рекомендуемая литература по дисциплине «Базы данных»
Создание Web-формы Calls
1. Добавьте к проекту новую Web-форму и назовите ее Calls.aspx.
2. Разместите на Web-форме элементы управления, перечисленные в следующей таблице, и задайте их свойства, как указано в этой таблице. Элементы управления, расположенные в таблице ниже Panel, следует разместить внутри панели, чтобы облегчить контроль их отображения во время выполнения.
Элемент управления |
Свойство |
Значение |
DropDownList |
ID |
drpContacts |
Button |
ID |
butView |
|
Text |
Посмотреть звоноки |
Button |
ID |
butAddCall |
|
Text |
Добавить звонок |
Panel |
ID |
pnlAdd |
TextBox |
ID |
txtDate |
TextBox |
ID |
txtTime |
TextBox |
ID |
txtSubject |
TextBox |
ID |
txtNotes |
|
TextMode |
Multiline |
Button |
ID |
butOKAdd |
Button |
ID |
butCancelAdd |
Literal |
ID |
litError |
3. В Toolbox перейдите на вкладку Dala и перетащите на Web-форму компонент DataSet — Visual Studio откроет диалоговое окно Add Dataset, в котором установлен переключатель Typed Dataset.
4. В раскрывающемся списке Name выберите типизированный набор данных Contact- Management.dsCalls и щелкните ОК. Visual Studio добавит набор данных к Web-форме.
5. Перетащите на Web-форму элемент управления DataList с вкладки View Forms в Toolbox, поместив его ниже панели. Задайте его свойства и шаблоны, как указано в следующей таблице.
Элемент управления |
Свойство |
Значение |
DataList |
ID |
dlstCalls |
|
DataSource |
dsCalls |
Шаблон верхнего колонтитула DataList | ||
Текст |
нет |
Calls |
HTML-тэг, определяющий горизонтальную линию |
нет |
<HR> |
Шаблон верхнего колонтитула DataList | ||
HTML-тэг, определяющий горизонтальную линию |
нет |
<HR> |
Шаблон элемента DataList | ||
Label |
ID |
lblDate |
|
(DataBindings) |
В диалоговом окне DataBinding выберите в дереве Simple Binding элемент Conlainer.Dataltem.CallDate и задайте форматирующее выражение {0:d}. |
Label |
ID |
lblTime |
|
(DataBindings) |
В диалоговом окне DataBinding выберите в дереве Simple Binding элемент Conlainer.Dataltem.CallDate и задайте форматирующее выражение {0:d}. |
Текст |
нет |
Тема: |
Label |
ID |
lblSubject |
|
(DataBindings) |
В диалоговом окне DataBinding выберите в дереве Simple Binding элемент Container.DataItem.Subject |
Текст |
нет |
Примечание: |
Label |
ID |
lblNotes |
|
(DataBindings) |
В диалоговом окне DataBinding выберите в дереве Simple Binding элемент Container.DataItem.Notes |
Шаблон разделителя | ||
HTML-тэг, определяющий горизонтальную линию |
нет |
<HR> |
6. Скопируйте элемент управления Hyperlink из формы AddContact (он расположен в нижней части этой формы) и поместите его внизу формы Calls. Чтобы скопировать элемент управления, выберите его и нажмите Ctrl+C. Чтобы вставить скопированный элемент в форму Calls, шелкните форму (в режиме Design) и нажмите Ctrl+V
7. Вызовите окно Code, дважды щелкнув левой кнопкой мыши Web-форму Calls, и добавьте в начало модуля следующий оператор:
Imports System.Data.SqlClient
8. Web-форма Calls использует для доступа к данным компоненты, определенные в файле Global.asax, поэтому вам понадобятся ссылки на компоненты (они хранятся в переменных состояния), созданные во время выполнения задания 2. Ниже показан код, объявляющий ряд объектов и обрабатывающий событие Page_Load. Этот код получает ссылки на компоненты для работы с БД, делая их доступными коду формы:
Dim ContactMgmt As SqlConnection
Dim adptContacts As SqlDataAdapter
Dim adptCalls As SqlDataAdapter
Dim dsContacts As New dsContacts()
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Получить сеансовые переменные состояния.
ContactMgmt = Session("ContactMgmt")
adptContacts = Session("adptContacts")
adptCalls = Session("adptCalls")
dsCalls = Session("dsCalls")
dsContacts = Session("dsContacts")
' Этот код выполняется при первом отображении формы.
If Not IsPostBack Then
' Заполнить набор данных Contacts.
adptContacts.Fill(dsContacts)
' Для каждой строки таблицы...
Dim rowNext As dsContacts.ContactsRow
For Each rowNext In dsContacts.Contacts
' ...создать новый элемент списка.
Dim lstNew As New ListItem()
lstNew.Text = rowNext.FirstName & " " & rowNext.LastName
lstNew.Value = rowNext.ContactID
' добавить элемент к раскрывающемуся списку.
drpContacts.Items.Add(lstNew)
Next
' Выбрать первый элемент в списке.
drpContacts.SelectedIndex = 0
End If
End Sub
9. Web-форма Calls модифицирует набор данных Calls во время выполнения. Чтобы после обработки страницы записать набор данных обратно в переменную состояния, необходимо добавить к обработчику события Page_PreRender (это последнее событие, которое обрабатывается перед отображением страницы) следующий код:
Private Sub Page_PreRender(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.PreRender
' Записать набор данных в сеансовую переменную состояния.
Session("dsCalls") = dsCalls
End Sub
10. Добавьте к обработчикам события Click кнопок View и Add следующий код:
Private Sub butView_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles butView.Click
' Создать команду для выборки из набора данных.
adptCalls.SelectCommand.CommandText = "SELECT * FROM Calls " & _
"WHERE ContactID=" & drpContacts.SelectedItem.Value
' Очистить набор данных.
dsCalls.Clear
' Заполнить набор данных сведениями о звонках.
adptCalls.Fill(dsCalls)
' Связать элемент управления DataList с данными.
dlstCalls.DataBind()
End Sub
Private Sub butAddCall_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles butAddCall.Click
' Задать исходные значения даты и времени.
txtDate.Text = Now.ToShortDateString()
txtTime.Text = Now.ToShortTimeString()
' Сделать панель для добавления звонков видимой.
pnlAdd.Visible = True
' Деактивировзть кнопки и раскрывающийся список.
butView.Enabled = False
butAddCall.Enabled = False
drpContacts.Enabled = False
End Sub
11. Добавьте вспомогательную функцию, которая получает новое значение CalllD. Поскольку поле CalllD является первичным ключом в таблице Calls, его значение должно быть уникальным внутри БД:
' Эта функция возвращает новое уникальное значение CalllD.
Private Function GetCallID() As Integer
Dim cmdNewID As New SqlCommand("SELECT MAX(CallID)" & _
" FROM Calls", ContactMgmt)
' Открыть соединение с БД
ContactMgmt.Open()
' Получить наибольшее значение ключа.
Dim intID As Integer
' Проверить, существует ли запись
If Not (cmdNewID.ExecuteScalar() Is DBNull.Value) Then
' Получить наибольшее число...
intID = CInt(cmdNewID.ExecuteScalar())
Else
' ...или присвоить intID значение О.
intID = 0
End If
' Закрыть соединение.
ContactMgmt.Close()
' Вернуть новое значение ключа (оно будет на единицу больше прежнего).
Return intID + 1
End Sub
12. Добавьте к обработчикам событий кнопок ОК и Cancel код, показанный ниже. Он очень похож на обработчики событий, использованные для добавления (или отмены добавления) записей в таблицу Contacts (см. предыдущее задание).
Private Sub butOKAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles butOKAdd.Click
Dim rowNew As dsCalls.CallsRow
rowNew = dsCalls.Calls.NewCallsRow
rowNew.ContactID = drpContacts.SelectedItem.Value
rowNew.CallID = GetCallID()
rowNew.CallDate = txtDate.Text
rowNew.CallTime = txtDate.Text & " " & txtTime.Text
rowNew.Subject = txtSubject.Text
rowNew.Notes = txtNotes.Text
' Добавить строку к набору данных со сведениями о звонках.
dsCalls.Calls.AddCallsRow(rowNew)
Try
adptCalls.Update(dsCalls)
' Скрыть панель добавления звонков.
pnlAdd.Visible = False
' Очистить поля.
txtSubject.Text = ""
txtNotes.Text = ""
' Активировать другие элементы управления.
butView.Enabled = True
butAddCall.Enabled = True
drpContacts.Enabled = True
Catch ex As Exception
' Отобразить сообщение об ошибке.
litError.Text = "Во время исполнения произошла ошибка" & _
"the call:<br>" & _
ex.Message & "<br>" & _
"Исправте ошибку и повторите попытку" & _
"< br>"
End Try
End Sub
Private Sub butCancelAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles butCancelAdd.Click
' Скрыть панель добавления звонков.
pnlAdd.Visible = False
' Очистить поля.
txtSubject.Text = ""
txtNotes.Text = ""
' Активизировать другие элементы управления.
butAddCall.Enabled = True
drpContacts.Enabled = True
End Sub
Задание 6. Создание форм DeleteContact и ContactTypes
До сих пор мы разбирали создание каждой Web-формы шаг за шагом. Теперь вы попробуете сделать это самостоятельно.
Итак, вам необходимо создать Web-формы DeleteContact и ContactTypes, которые должны:
использовать компоненты доступа к данным, определенные в файле Global.asax;
манипулировать БД. Форма DeleteContact отвечает за удаление из БД сведений о контактных лицах, а форма ContactTypes — за просмотр и добавление новых типов контактных лиц;
использовать транзакции с наборами данных (см. описание форм AddContact и Calls);
предоставлять пользователю возможность вернуться на форму SwitchBoard.
Протестируйте приложение полностью, проверьте работу всех функциональных возможностей. Предоставьте преподавателю для защиты.