
- •Федеральное агенство по образованию
- •Оглавление
- •Часть 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. Требования к отчёту
- •Рекомендации к выполнению курсовоГо проекта по дисциплине «Базы данных»
- •Варианты заданий:
- •Рекомендуемая литература по дисциплине «Базы данных»
Лабораторная работа №4. Разработка приложения на Visual Basic для ведения однотабличной бд.
Цель работы:
Ознакомиться с операторами VB при разработке прикладных программ с использованием СУБД;
Исследовать правила реализации операций ведения БД: добавления, удаления, редактирования, поиска, фильтрации и пр.
Научиться формировать основные SQL-запросы на базе параметров, заданных пользователем в окне диалога.
Ход работы:
Рассмотрим проект VB, выполняющий обработку однотабличной БД, созданной в СУБД MS Access. Для этого, открыв MS Access, с помощью Конструктора, создайте таблицу с именем Spisok (все имена должны быть латинскими и не иметь пробелов) со следующей структурой:
Обратите внимание, если Вы задаете другие имена, их же должны использовать при обращении к полям в программе!
Сохранив созданный файл, закройте СУБД, и вызовите MS Visual Basic (обычно это можно выполнить следующим образом: Пуск->Программы->MS Visual Basic->MS Visual Basic, если путь не совпадает, уточните порядок запуска приложения у лаборанта или преподавателя).
В открывшем окне «Новый проект» необходимо выбрать значок «Стандартный». После этого редактор создаст новый VB-проект с одной формой. Далее показан внешний вид редактора VB и даны расшифровки его составляющих.
В окне свойств измените имя формы на frmSpisok. Задание имен объектов с использованием приставки является одним из правил хорошего тона в программировании. Встретив в тексте программы указание на объект в виде “frmSpisok” программист понимает, что этим объектом является одна из форм проекта. Аналогично задают приставки для прочих объектов. Обычно они формируются из трех первых букв, либо первых трех по порядку согласных названия типа объекта. (Form = frm, CommandButton = cmb, Data = dat и т.д.)
Сохраните проект в каталоге указанном преподавателем.
Найдите кнопку объекта Data на панели инструментов и разместите его внизу окна.
Задайте его основные свойства для подключения файла БД к основному приложению: Name – DataStud, DataBaseName (указать маршрут доступа к файлу БД), RecordSource – Spisok.
Вызвав ToolsMenu Editor, сформируйте контекстное меню Вашего приложения: на основном уровне (размещайте стрелками) Запросы, Отчёты и Выход (mnuExit). Подуровни для Запросы: Поиск(mnuPoisk) и Обновление(mnuObnovl), для Отчёты: Справка школы(rptSprav), Список учащихся (mnu.RepSp). Для подуровня Поиск задайте 2-ое вложение: Простой поиск (mnuFind) и Фильтрация записей(mnuFilt).
С помощью ЭУ надпись и текстовое поле сформируйте объекты для вывода фамилии, имени и группы. В свойствах текстовых полей для отображения соответствующих значений полей БД задайте: н-р, для фамилии DataSource – DataStud, DataField – Familie. И так, соответственные данные по каждому полю.
Добавьте в форму ЭУ Frame. Через окно свойств присвойте заголовок рамки «Успеваемость» и разместите в ней данные об оценках. Можно это сделать либо при помощи текстовых полей, либо с помощью объекта DBCombo.
Е
сли Вы воспользовались объектомDBCombo, в окне свойств установите следующие параметры: RowSource – DataStud, ListField – Word (или Excel, Access, соответственно), такие же значения для свойств DataSource и DataField).
Теперь дело за программированием кнопок Добавления, удаления, сохранения изменений для записей БД и отмены действий.
Добавив кнопки в форму и присвоив им имена, (см. по тексту модулей), двойным щелчком левой кнопки мыши входим в редактор процедур этих объектов и формируем соответствующий код (см. ниже).
Private Sub mnuExit_Click()
Unload Me
End Sub
Private Sub mnuObnovl_Click()
frmRefresh.Show
End Sub
Private Sub mnuFilt_Click()
frmQuery.Show
End Sub
Private Sub mnuPoisk_Click()
frmFind.Show
End Sub
Private Sub CmbAdd_Click()
Dim m As Long
DataStud.Recordset.MoveLast
m = DataStud.Recordset![Cod]
DataStud.Recordset.AddNew
fl = True
DataStud.Recordset![Cod] = m + 1
cmbSave.Enabled = True
End Sub
Private Sub cmbCancel_Click()
fl = False
DataStud.UpdateControls
cmbSave.Enabled = False
End Sub
Private Sub cmbDelete_Click()
fl = False
DataStud.Recordset.Delete
DataStud.Recordset.MoveLast
DataStud.Caption = "Записей:" & DataStud.Recordset.RecordCount
End Sub
Private Sub cmbSave_Click()
Dim kl As Long
DataStud.Recordset.MoveLast
kl = DataStud.Recordset.RecordCount
DataStud.Caption = "Записей:" & kl
If Not fl Then
DataStud.Recordset.Edit
End If
DataStud.Recordset.Update
' cmbSave.Enabled = False
End Sub
Формируем диалог по запросам. Необходимо организовать поиск записей по заданному критерию 2 способами. Первый – с использованием последовательного доступа (FindFirst, Findnext … ), второй – с использованием SQL-запроса на выборку (параллельный поиск, фильрация).
В первом случае, процедуре mnuFind (вызываемой по подпункту ЗапросыПоиск) назначаем отображение формы, в которой будет задаваться критерий поиска записей (например, по фамилии студента). В форме можно сформировать одно текстовое поле txtFind и кнопку Поиск cmdPoisk.
Для кнопки задать следующую процедуру:
Private Sub cmdPoisk_Click()
Dim D As String
D=frmSpisok.DataStud.Recordset.Bookmark
With frmSpisok.DataStud.Recordset
.FindNext “Familie=” & Chr(34) & txtFind.Text & Chr(34)
If .NoMatch Then
.FindFirst “Familie=” & Chr(34) & txtFind.Text & Chr(34)
If .NoMatch Then
MsgBox “No record Find!”
.Bookmark=D
End If
End If
End With
frmFind.txtFind.Text=””
frmFind.Hide
End Sub
Во втором случае, вся последовательность действий сохраняется как и при работе с первой формой (всегда начинаете с подключения объекта Data).
В этой форме мы используем объект DBGrid для отображения данных в привычном табличном виде. Добавляем этот объект DBGrid в нашу форму, установив его имя DBGridSelRes, также задаём свойству DataSource значение DataStud1.
Вводим процедуру обработки для кнопки Отобразить результат:
Private Sub cmdShow_Click()
Dim SQLStr As String
Dim CapStr As String
'Выбираем поля для просмотра в таблице
SQLStr = "SELECT Familie,Imja,Group, Word, Excel, Access FROM Spisok"
If (DBCmbFam.Text <> "") And (DBCmbGroup.Text <> "") Then
SQLStr = SQLStr & " WHERE (Familie=" & Chr(34) & DBCmbFam.Text & Chr(34) & ") AND (Group= " _
& Chr(34) & DBCmbGroup.Text & Chr(34) & ")"
Else
SQLStr = SQLStr & " WHERE (Familie=" & Chr(34) & DBCmbFam.Text & Chr(34) & ") OR (Group= " _
& Chr(34) & DBCmbGroup.Text & Chr(34) & ")"
End If
SQLStr = SQLStr & " ORDER BY Group DESC"
'MsgBox SQLStr
DataStud1.RecordSource = SQLStr
DataStud1.Refresh
'Создаем строку заголовка объекта TDBGridSelRes
CapStr = "РЕЗУЛЬТАТ ОТБОРА"
DBGridSelRes.Caption = CapStr
If DBGridSelRes.Visible = False Then
DBGridSelRes.Visible = True
End If
DBGridSelRes.SetFocus
End Sub
12. Третья форма для обновления содержимого полей БД имеет вид:
Начните её формирование также с добавления объекта Data (DataStud2) и установки соответствующих свойств.
В рамке разместите 4 переключателя, для каждого из которых (по строке) разместите текстовое поле и раскрывающийся список (задайте их значения свойств). И значению Visible каждого поля и списка присвойте значение False/
12. Для кнопки Обновить введите нижеследующий текст процедуры.
Private Sub cmdRefr_Click()
Dim SQLStr As String
Dim Buf As Database
Set Buf = OpenDatabase("Spisok.mdb")
SQLStr = "UPDATE Spisok SET "
'Выбираем поля для обновления
If optGR = True Then
SQLStr = SQLStr & "[Group]=" & Chr(34) & txtNewGR.Text & Chr(34) & " WHERE ([Group]= " _
& Chr(34) & DBCombo1.Text & Chr(34) & ")"
End If
If optWord = True Then
SQLStr = SQLStr & "Word=" & txtNewWrd.Text & " WHERE Word= " & DBCombo2.Text
End If
If optExc = True Then
SQLStr = SQLStr & "Excel=" & txtNewExc.Text & " WHERE Excel= " & DBCombo3.Text
End If
If optAcc = True Then
SQLStr = SQLStr & "Access=" & txtNewAcc.Text & Chr(34) & " WHERE (Access= " & DBCombo4.Text
End If
MsgBox SQLStr
Buf.Excecute SQLStr
Buf.Close
End Sub
Private Sub optAcc_Click()
txtNewAcc.Visible = True
DBCombo4.Visible = True
End Sub
Private Sub optExc_Click()
txtNewExc.Visible = True
DBCombo3.Visible = True
End Sub
Private Sub optGR_Click()
txtNewGR.Visible = True
DBCombo1.Visible = True
End Sub
Private Sub optWord_Click()
txtNewWrd.Visible = True
DBCombo2.Visible = True
End Sub
Не забывайте по окончании каждого этапа работ сохранять изменённый проект (желательно все файлы в одной папке)
13. Теперь необходимо сформировать отчёты.
Для этого добавьте в проект объект Data Report, задайте имя MyReport. Здесь мы сформируем отчёт «Справка» для конкретного учащегося Вы видите, что форма отчета состоит из 5 областей, так же как и в MS Access, в отчете 5 областей заголовок отчёта(4), верхний колонтитул(2), область данных(1), нижний колонтитул(3), примечание отчета(5).
В области заголовка, используя элементы управления DataReport, создайте метку, и в окне свойств введите параметры свойств Caption, Font и пр. для придания читабельного вида отчету. Если в отчете будут использованы данные из таблиц БД, отобразить данные из полей можно при помощи ЭУ RptTextBox, в значении свойства DataField которого введите имя соответствующего поля БД. Например, отчет «Справка» будет выглядеть следующим образом:
Для связи внешнего приложения с БД в отчетах с использованием ADO доступа к данным, необходимо создать пользовательский ресурс. Откройте Панель управления Вашего ПК (эти настройки необходимо выполнять на каждом ПК, где Вы будете редактировать приложение), откройте окно администрирования ODBC (ODBC Data Sources).
На вкладке User DSN щелкните кнопку Add для добавления нового источника и выберите в открывшемся окне Driver Microsoft Access (*.mdb). В окне дополнительных параметров введите любое имя источника данных (например, main) и укажите путь к своей БД при помощи кнопки Select:
Теперь осталось дело за программным кодом. В проекте VB выберите форму frmSpisok и войдите в редактор VB, щелкнув двойным щелчком по соответствующему пункту меню. Текст процедуры приведен ниже:
Dim main As ADODB.Connection
Dim rec As ADODB.Recordset
Private Sub mnuSprav_Click()
Set main = New ADODB.Connection
main.Open "dsn=main"
Set rec = main.Execute("SELECT Spisok.Group, Spisok.Familia, Spisok.Imja " & _
"From Spisok " & _
"WHERE (Spisok.Familia='" & DataStud.Recordset!Familia & "' AND " & _
"Spisok.Group='" & DataStud.Recordset!Group & "')")
Set MyReport.DataSource = rec
MyReport.Show
End Sub
Протестируйте работу отчета из приложения.
Для создания 2-го отчета добавим в проект VB элемент DataEnvironment1, как правило элемент добавляется сразу с 1 подключением (Connection1).
Вызовите окно свойств (Properties) Connection1 и в открывшемся окне выберите вкладку Connection. На вкладке выберите переключатель Use connection string (строка подключения). Станет доступно текстовое поле в котором будут сформированы параметры подключения БД.
Параметры подключения формируйте при помощи кнопки Build. В окне Select Data Source на 2 вкладке (Machine Data Source) выберите имя своего источника данных main. (ОК).
Щелкните кнопку DataBase и сформируйте маршрут доступа к БД (которой соответствует имя main)
Вернитесь в окно свойств подключения. Теперь Вам можно в 3 пункте выбрать маршрут к Вашей БД. (см. рис)
Проверьте подключение БД при помощи кнопки Test Connection
Щелкните правой кнопкой мыши по Connection и добавьте в проект для подключения команду (Add Comand).
Произведем настройки для Command1. В свойствах объекта выберите для Database Object : Table, а в Object Name введите имя таблицы spisok.
В дереве DataEnvironment появятся поля таблицы spisok.
Создадим второй отчет «Список учащихся», в свойствах отчета укажите: для DataSource выберите из списка имя DataEnvironment1, в DatMember – Command1.
Правила формирования надписей такие же, как и в предыдущем отчете. Отличие заключается только при установке свойств текстовых полей: в DataMember выберите из списка имя Command1, после чего в свойстве DataField появится список полей таблицы spisok. Выберите нужное Вам поле.
Оформите внешний вид отчета (на своё усмотрение), после чего перейдите в модуль формы frmSpisok и назначьте меню вызова отчета процедуру по отображению отчета:
Private Sub mnuRepSp_Click()
DataReport2.Show
End Sub
Протестируйте работу приложения
По окончании скомпилируйте exe-файл своей работы (File – Make Project1.exe), указав свое имя проекта и предоставьте преподавателю для защиты.