Содержание.
Введение…………………………………………………………………………. .2
1.Создание и заполнение базы данных…………………………………………..3
1.1.Создание БД……………………………………………………….. 3
1.2.Вывод таблиц в формы……………………………………………6 1.3.Формирование различного вида запросов………………………. 7
1.4.Вывод запросов на формы…………………………………….. …10
1.5.Создание отчёта с итогами…………………………………….. ...12
1.6.Создание меню управления базой данных……………………….13
2.Экспорт данных в Visual Basic 6.0 (с использованием элементов управления DATA и MSFlexGrid)……………………………………………………………15
Заключение………………………………………………………………………25
Список использованной литературы…………………………………………..26
Введение
Как известно, большинство современных компьютеров работают под управлением операционной системы Windows и оснащены, как правило, пакетом приложений Word, Excel, Access и VisualBasic семейства MSQffice. В настоящее время практически повсеместно используется пакет прикладных программ Microsoft Office, в стандартный набор которого входит MS Access – мощная система управления базами данных. Access интегрирован с прочими приложениями пакета, что позволяет применять богатые возможности компонентов. Office. Access позволяет создавать дружественный интерфейс, а также – решать специальные задачи при помощи программирования на языке Visual Basic for Application (VBA), в основе которого лежит язык Basic. Visual Basic стал очень популярным в последнее время благодаря лёгкости создания программных продуктов, удобству и быстроте доступа к базам данных и глубокой интеграции с Microsoft Office, что способствует развитию навыков объектного и визуального проектирования.
1. Создание и заполнение базы данных.
Таблица 1 в режиме конструктора
Поле «Kod» (Код города) - ключевое. Через него будет связь со второй таблицей.
Таблица 2 в режиме конструктора
Связывание таблицы 1 и таблицы 2
Выбираем в меню «Сервис» - «Схема данных», добавляем созданные таблицы. Выделяем в таблице 1 поле «Kod» и, удерживая нажатой левую кнопку мышки, перетаскиваем это поле на поле с таким же названием во второй таблице. В открывшемся диалоговом окне необходимо отметить флажками следующие пункты:
«Обеспечение целостности данных»
«Каскадное обновление связанных полей»
«Каскадное удаление связанных записей»
Связь один-ко-многим означает, что одной записи первой таблицы соответствует ни одна, одна или много записей второй таблицы.
Открываем таблицы и заполняем их:
1.2. Вывод таблиц в формы
Для вывод на формы используем конструктор, на котором формируем необходимые текстовые поля с привязкой в полям таблиц и метками для подписи данных.
Форма в режиме конструктор:
Форма в рабочем состоянии.
1.3. Формирование различного вида запросов
1) Вывести города и районы , у которых расход воды за предыдущий период был больше задаваемой величины
Конструктор запроса:
Запрос 1 на языке SQL:
SELECT Tab1.Nazv, Tab2.[Nazv r], Tab1.Ras2
FROM Tab1 INNER JOIN Tab2 ON Tab1.Kod = Tab2.Kod
WHERE (((Tab1.Ras2)>[задать величину]));
Результат выполнения запроса:
2) Вывести информацию о городах, где суммарный расход ресурсов увеличился по сравнению с предыдущем периодом хотя бы для одного ресурса
.
Конструктор запроса:
Вспомогательный запрос:
основной запрос:
Запрос 2 на языке SQL:
Вспомогательный запрос:
SELECT Tab2.Kod, Sum(Tab2.Rn1) AS Sum1, Sum(Tab2.Rn2) AS Sum2, Sum(Tab2.Rn3) AS Sum3, Sum(Tab2.Rn4) AS Sum4, Sum(Tab2.Rn5) AS Sum5
FROM Tab2
GROUP BY Tab2.Kod;
Основной запрос:
SELECT Tab1.Kod, Tab1.Nazv
FROM Tab1 INNER JOIN zap21 ON Tab1.Kod = zap21.Kod
WHERE (((zap21.Sum1)>[ras1])) OR (((zap21.Sum2)>[ras2])) OR (((zap21.Sum3)>[ras3])) OR (((zap21.Sum4)>[ras4])) OR (((zap21.Sum5)>[ras5]));
Результат выполнения запроса
Вспомогательный запрос:
основной запрос:
1.4. Вывод запросов на формы.
Как в пункте 2.2. создаём формы в конструкторе и выводим туда результаты запросов.
Форма запроса 1 в режиме конструктор:
Форма запроса 2 в режиме конструктор:
Форма запроса 1 в рабочем состоянии:
Форма запроса 2 в рабочем состоянии:
1.5. Создание отчёта с итогами по группам записей.
Для создания отчёта также можно воспользоваться конструктором или мастером создания отчётов.
Отчёт в режиме конструктора:
Результат составления отчёта:
1.6. Создание меню управления базой данных.
Для создания меню откроем конструктор и расположим на нём командные кнопки и метки к ним.
Для того чтобы меню заработало, необходимо указать действие для каждой кнопки. Щёлкнув два раза левой кнопкой мышки, открываем окно параметров, выбираем «нажатие кнопки» и указываем, что необходимо выполнить процедуру.
Пример процедуры для кнопки «Информация о предприятии»
Private Sub Кнопка0_Click()
On Error GoTo Err_Кнопка0_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Tab1"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка0_Click:
Exit Sub
Err_Кнопка0_Click:
MsgBox Err.Description
Resume Exit_Кнопка0_Click
EndSub
Аналогично указываем процедуры других кнопок.
Меню в рабочем состоянии:
2.Экспорт данных в
Visual
Basic 6.0 (с использованием элементов управления
DATA и
MSFlexGrid)
Разработать форму и программный код в VisualBasic, обеспечивающий доступ к базе данных (через элемент Data) и позволяющий:
3.
Для каждого города и района вывести информацию о ресурсах с минимальным расходом.(ресурс, расход).
4.
По выбираемым ресурсам вывести информацию о районе и городе с максимальным расходом.
Для работы с базой данных в программном средстве VisualBasic необходимо сохранить созданную базу данных в формате 1997 года (
сервис - служебные программы - преобразовать вAccess97),
затем выйти изAccess и уже ее подключать в программеVB6 к элементу Data, найдя имя БД в списке его свойства DatabaseName.
Форма до запуска программы
:
Используемые элементы управления:
Элемент |
Свойство |
Значение свойства |
MSFlexGrid |
Name |
Grid |
Cols |
2 |
Rows |
2 |
FixedCols |
0 |
FixedRows |
1 |
Data |
Name |
Data1 |
DatabaseName |
c:\Приложение Microsoft Access_97.mdb |
Connect |
Access |
RecordsetType |
0 – Table |
RecordSource |
Таблица 1 |
Связанные текстовые поля TextBox |
DataSource |
Data1 |
Name |
Text1(0) |
Name |
Text1(1) |
Name |
… |
Name |
Text1(7) |
Data |
Name |
Data2 |
DatabaseName |
c:\Приложение Microsoft Access_97.mdb |
Connect |
Access |
RecordsetType |
0 – Table |
RecordSource |
Таблица 2 |
Связанные текстовые поля TextBox |
DataSource |
Data1 |
Name |
Text2(0) |
Name |
Text2(1) |
Name |
… |
Name |
Text2(7) |
Label |
Name |
Label |
Caption |
задаётся программно |
CommandButton |
Name |
Command1 |
Caption |
Вывести таблицу |
CommandButton |
Name |
Command2 |
Caption |
Добавить запись |
CommandButton |
Name |
Command3 |
Caption |
Удалить запись |
CommandButton |
Name |
Command4 |
Caption |
Вывести таблицу |
CommandButton |
Name |
Command5 |
Caption |
Добавить запись |
CommandButton |
Caption |
Command6 |
Name |
Удалить запись |
CommandButton |
Name |
Command7 |
Caption |
Справка 1 |
CommandButton |
Name |
Command8 |
Caption |
Справка 2 |
CommandButton |
Caption |
Command9 |
Name |
Выход |
Программный
код формы
:
'ОТОБРАЖЕНИЕ ТАБЛИЦ
Private Sub Command1_Click()
Label.Caption = "Таблица №1"
Grid.Clear 'очистка сетки
Grid.Cols = 8
Grid.Rows = Data1.Recordset.RecordCount + 1 'устанавливаем количество строк в гибких сетках равным количеству записей в таблице + 1 (для заголовков столбцов)
Data1.Recordset.MoveFirst 'переход к первой записи
ForI = 1 ToData1.Recordset.RecordCount 'цикл отображения записей таблицы в гибких сетках
ForJ = 1 To 8 'по столбцам записи таблицы
If I = 1 Then Grid.TextMatrix(0, J - 1) = Data1.Recordset.Fields(J - 1).Name
Grid.TextMatrix(I, J - 1) = Data1.Recordset.Fields(J - 1)
NextJ
Data1.Recordset.MoveNext 'переход к следующей записи таблицы 1
NextI
Data1.Recordset.MoveFirst 'возврат к первой записи
ForJ = 1 To 8 'выравниваем ширину столбцов
Grid.ColWidth(J - 1) = Grid.Width / 9
Next J
End Sub
Private Sub Command4_Click()
Label.Caption = "Таблица №2"
Grid.Clear 'очистка сетки
Grid.Cols = 8
Grid.Rows = Data2.Recordset.RecordCount + 1 'устанавливаем количество строк в гибких сетках равным количеству записей в таблице + 1 (для заголовков столбцов)
Data2.Recordset.MoveFirst 'переход к первой записи
ForI = 1 ToData2.Recordset.RecordCount 'цикл отображения записей таблицы в гибких сетках
ForJ = 1 To 8 'по столбцам записи таблицы
If I = 1 Then Grid.TextMatrix(0, J - 1) = Data2.Recordset.Fields(J - 1).Name
Grid.TextMatrix(I, J - 1) = Data2.Recordset.Fields(J - 1)
NextJ
Data2.Recordset.MoveNext 'переход к следующей записи таблицы 1
NextI
Data2.Recordset.MoveFirst 'возврат к первой записи
ForJ = 1 To 8 'выравниваем ширину столбцов
Grid.ColWidth(J - 1) = Grid.Width / 9
NextJ
EndSub
'ДОБАВЛЕНИЕ ЗАПИСЕЙ
Private Sub Command2_Click() 'в таблицу 1
Dim Reply As VbMsgBoxResult
Reply = MsgBox("Если будете вводить новую запись, нажмите кнопку OK", _
vbOKCancel, "Ввод новой записи")
If Reply = vbOK Then
Text1(0).SetFocus 'Остановка, текстовые окна пустые, в них нужно ввести запись
Data1.Recordset.AddNew
EndIf
MsgBox ("После ввода записи нажмите левую стрелку элемента Data")
End Sub
Private Sub Command5_Click() 'в таблицу 2
Dim Reply As VbMsgBoxResult
Reply = MsgBox("Если будете вводить новую запись, нажмите кнопку OK", _
vbOKCancel, "Ввод новой записи")
If Reply = vbOK Then
Text2(0).SetFocus 'Остановка, текстовые окна пустые, в них нужно ввести запись
Data2.Recordset.AddNew
EndIf
MsgBox ("После ввода записи нажмите левую стрелку элемента Data")
End Sub
'УДАЛЕНИЕ ЗАПИСЕЙ
PrivateSubCommand3_Click() 'из таблицы 1
DimReplyAsVbMsgBoxResult
Reply = MsgBox("Если будете удалять текущую запись, нажмите кнопку OK", vbOKCancel, "Удаление текущей записи")
IfReply = vbOKThen
Data1.Recordset.Delete 'удаление записи
Data1.Recordset.MoveFirst 'переход к первой записи
End If
Command1_Click
End Sub
Private Sub Command6_Click() 'из таблицы 1
Dim Reply As VbMsgBoxResult
Reply = MsgBox("Если будете удалять текущую запись, нажмите кнопку OK", vbOKCancel, "Удаление текущей записи")
If Reply = vbOK Then
Data2.Recordset.Delete 'удаление записи
Data2.Recordset.MoveFirst 'переход к первой записи
End If
Command3_Click
End Sub
Отображение
таблицы
1:
Отображение таблицы 2:
3. Для каждого города и района вывести информацию о ресурсах с минимальным расходом.(ресурс, расход).
Private Sub Command7_Click()
Label.Caption = "Информация о ресурсах с минимальным расходом"
Grid.Clear 'очистка сетки
Grid.Cols = 5
Grid.Rows = Data2.Recordset.RecordCount + 1 'устанавливаем количество строк в гибкой сетке равным количеству записей в таблице + 1 (для заголовков столбцов)
Grid.FormatString = "^Код города|^код района|название района|^№ ресурса|^расход"
Data2.Recordset.MoveFirst 'переход к первой записи
For I = 1 To Data2.Recordset.RecordCount
Min = Data2.Recordset.Fields(3): nommin = ""
For J = 3 To 7 'по столбцам записи таблицы
If Data2.Recordset.Fields(J) < Min Then Min = Data2.Recordset.Fields(J): nommin = ""
If Data2.Recordset.Fields(J) = Min Then nommin = nommin & Str(J - 2) & " "
Next J
Grid.TextMatrix(I, 0) = Data2.Recordset.Fields(0)
Grid.TextMatrix(I, 1) = Data2.Recordset.Fields(1)
Grid.TextMatrix(I, 2) = Data2.Recordset.Fields(2)
Grid.TextMatrix(I, 3) = nommin
Grid.TextMatrix(I, 4) = Min
Data2.Recordset.MoveNext 'переход к следующей записи таблицы 1
Next I
For J = 1 To 5 'выравниваем ширину столбцов
Grid.ColWidth(J - 1) = Grid.Width / 6
Next J
Data2.Recordset.MoveFirst 'возврат к первой записи
End Sub
4. По выбираемым ресурсам вывести информацию о районе и городе с максимальным расходом.
Private Sub Command8_Click()
Grid.Cols = 4
Grid.FormatString = ""
res = InputBox("Введите номер ресурса от 1 до 5", "Ввод данных")
Data2.Recordset.MoveFirst 'переход к первой записи таблицы1
Grid.Rows = 1 'количество строк в гибкой сетке
Grid.FormatString = "Код города|Код района|Название города|Название
_района"
ForJ = 1 To 4 'выравниваем ширину столбцов
Grid.ColWidth(J - 1) = Grid.Width / 5
Next J
Max = 0
For I = 1 To Data2.Recordset.RecordCount
If Data2.Recordset.Fields(res + 2) > Max Then Max =
_Data2.Recordset.Fields(res + 2): Grid.Rows = 1
If Data2.Recordset.Fields(res + 2) = Max Then
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = Data2.Recordset.Fields(0)
Grid.TextMatrix(Grid.Rows - 1, 1) = Data2.Recordset.Fields(1)
Grid.TextMatrix(Grid.Rows - 1, 3) = Data2.Recordset.Fields(2)
Data1.Recordset.MoveFirst 'переход к первой записи таблицы1
ForJ = 1 ToData1.Recordset.RecordCount 'по записям ищем
_название города по его коду
If Data1.Recordset.Fields(0) = Data2.Recordset.Fields(0) Then
_Grid.TextMatrix(Grid.Rows - 1, 2) = Data1.Recordset.Fields(1)
Data1.Recordset.MoveNext 'переходим к следующей записи
_таблицы2
Next J
EndIf
Data2.Recordset.MoveNext 'переходим к следующей записи таблицы1
NextI
Label.Caption = "По ресурсу " & Str(res) & " максимальный расход " & Str(Max) & " был в:"
End Sub
Private Sub Command9_Click()
End
End Sub
Заключение.
В ходе данного курсового проекта, поставленная цель была реализована (пункты 1 и 2 задания по КП были выполнены на Access
., 3 и 4 на Visual Basic
.(обработка БД Access)). Были выполнены входящие в индивидуальное задание задачи по следующим разделам VB: программирование линейных алгоритмов, программирование разветвляющихся алгоритмов, программирование циклических алгоритмов, создание процедур и функций пользователя.
Список использованной литературы
:
1) Методические указания к выполнению лабораторных работ по дисциплине “Компьютерная подготовка” с применением СУБД ACCESS. Выпуск 2. / Сост.: А.Е. Макаренко, Т.В. Бугреева, И.А. Ильина, Е.В. Лемешко, М.В. Седун; ГУУ. – М., 2002. – 48 с.
2) Методические указания к выполнению лабораторной работы по дисциплине “Компьютерная подготовка” с применением СУБД ACCESS. Выпуск 1. /
3) Сост.: Т.В. Бугреева, И.А. Ильина, А.Е. Макаренко, Е.В. Лемешко, М.В. Седун; ГУУ. – М., 2002. – 32 с.
4) Несмеянов И.А., Барковский В.В., Венчковский Л.Б. Использование языка Visual Basic 6.0 при создании программных средств для обработки баз данных: Учебно-практическое пособие – 2-е изд., испр./ ГУУ. – М., 2006. – 180 с.
|