Создание и обработка Баз данных средствами Visual Basic 6.0
Создание и обработка Баз данных средствами Visual Basic 6.0
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования «ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ УПРАВЛЕНИЯ» Кафедра КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ Курсовой проект по дисциплине «Компьютерная подготовка» На тему: «Создание и обработка Баз данных средствами Visual Basic 6.0» Специальность «Государственное и муниципальное управление» Курс I Группа ГиМУ 1-4 Студент Дегтярев Д.Н. Студенческий билет № 009-09 Вариант № 8 «15» мая 2010 г. Руководитель проекта ______________________ (учебное звание, степень) Оценка работы _____________ «___»_________________201_г. Москва 2010 г. Содержание Структура таблицы Исходные данные Создание таблицы Алгоритм чтения таблицы PR Алгоритм чтения таблицы GL Создание пользовательского меню Решение Меню Вид формы и свойства элементов управления Вид формы с таблицей PR Вид формы с таблицей GL Справка 1 Справка 2 Справка 3 Документ Заключение Вариант 4 Структура таблиц Таблица PR(предприятия) |
Код предприятия | Наименование предприятия | Численность персонала | Объём выпускаемой продукции в руб. | | | | | | | |
Таблица GL(обеспеченность жильем) |
Код предприятия | Отсутствие жилья | Нуждающиеся в улучшении | Живущие далеко от предприятия | | | | | | | |
В таблице GL данные приведены в % к общему количеству персонала. Состав меню: 1. Распечатка исходных таблиц. 2. Формирование и выдача справок: Справка 1. Наименование предприятий, объем выпуска продукции которых превышает 20 млн. рублей. Записи упорядочить по возрастанию численности персонала. |
Наименование предприятия | Объём выпускаемой продукции в руб. | | | | | |
Справка 2. Коды предприятий, в которых процент сотрудников, не имеющих жилья, превышает 15%. Записи упорядочить по убыванию процента сотрудников, не имеющих жилья. Справка 3. Сведения о предприятиях с количеством персонала, большим 5000 чел., в которых процент сотрудников, не имеющих жилья и нуждающихся в улучшении жилищных условий, превышает 20%. |
Наименование предприятия | Численность персонала | Объём выпускаемой продукции в руб. | Отсутствие жилья | Нуждающиеся в улучшении | | | | | | | | |
Создание документа: Сведения об объеме выпускаемой продукции на одного работающего на предприятиях, свыше 70% сотрудников которых имеют нормальные жилищные условия. |
Наименование предприятия | % сотрудников обеспеченных жильем | Продукция на одного работающего (в руб.) | | | | | | |
Исходные данные Таблица PR Таблица GL Создание Таблиц Для создания Базы данных, в первую очередь, понадобится Окно формирования новой таблицы базы данных (Table Structure). Для этого в Главном Меню Главной панели проекта Visual Basic 6.0 следует выбрать опцию Add-Ins (Добавления или Модули), а в ней - команду Visual Data Manager. При выполнении этой команды раскрывается Панель Приложения VisData- Панель Диспетчера баз данных Visual Basic 6.0. Рисунок 1. Панель VisData Рисунок 2. Заголовок Панели VisData Выбрать меню File Панели Приложения VisData и команду New. В раскрывшемся подменю следует выбрать в качестве типа создаваемой базы данных Microsoft Access, а во втором подменю- Version 7.0 MDB, или иначе, выполнить последовательность команд: File - New - Microsoft Access - Version 7.0 MDB В результате раскроется Окно создания Нового файла базы данных Microsoft Access - Окно Select Microsoft Access Database To Create. Для открытия уже существующего файла базы данных необходимо вместо команды New воспользоваться командой Open Database. Рисунок 3. Окно создания Нового файла Базы данных - Окно Select Microsoft Access Database To Create В окне Имя файла указать имя каталога, в котором будет храниться создаваемая база. При этом на Панели Приложения VisData появится Окно базы данных (Окно Database Window) и Окно операторов SQL Statements (рис. 4). Рисунок 4 .Панель Приложения VisData после появления на ней Окна Базы данных (Database Window) и Окна SQL Statements В любом месте Окна Database Window необходимо щелкнуть правой клавишей мыши. В появившемся меню следует выбрать команду New Table (создать таблицу). Раскроется Панель Table Structure - Структура таблицы (рис. 5). Можно приступать к проектированию структуры таблицы. Рисунок 5. Панель Table Structure Проектирование структуры таблицы базы данных включает следующие шаги: 1. В поле Table Name (имя таблицы) ввести имя проектируемой таблицы - SM. Рисунок 6. Панель Table Structure после внесения в окно Table Name имени проектируемой таблицы SM 2. Раскрыть Диалоговое Окно Add Field (Добавить поле) на Панели Table Structure кнопкой Add Field - раскроется Диалоговое окно Add Field (Добавить поле). Рисунок 7. Раскрытое диалоговое окно Add Field (Добавить поле) 3. С помощью Диалогового Окна Add Field осуществляется по очереди ввод характеристик всех полей создаваемой таблицы SM - вводятся имена полей, их типы и размеры полей. Рисунок 8. Диалоговое окно Add Field для ввода сведений о полях проектируемой таблицы создаваемой базы данных В поле Туре Окна Add Field по умолчанию указан тип вводимого данного - Text. При разработке приложения создания базы данных нам может понадобиться использование данных другого типа, что и осуществляется выбором стандартных типов с использованием клавиши окна Туре. В Visual Basic вы можете применять следующие типы данных: v числовой (integer, Long, Single, Double, Currency); v строковый (String); v типа дата (Date); v байтовый(Byte); v логический (Boolean); v произвольный (variant); v объектный (object). Для хранения чисел в Visual Basic используется пять разных типов данных. Для хранения целочисленных данных будем использовать тип Integer, а для храпения десятичных чисел типы данных Single. 4. По окончании ввода всей информации поля создаваемой таблицы базы данных щелкнуть кнопку ОК диалогового окна Add Field Панели Table Structure. Поле добавляется в таблицу. 5. Добавим все необходимые поля тем же способом и нажмем кнопку Close, вернувшись в окно Table Structure. 6. Для завершения процесса проектирования таблицы создаваемой Базы Данных щелкается кнопка Build the Table (сформировать таблицу) на панели Table Structure, что приводит к закрытию окна Table Structure и возврату к Панели Приложения с окном Database Window, в котором представлена создаваемая База Данных, включающая пока только одну таблицу - таблицу PR. Включим в нашу Базу Данных еще одну таблицу - таблицу GL. Для этого также воспользуемся окном Database Window и, выполнив те же шаги, создадим в Базе данных БД структуру второй таблицы GL. Рисунок 9. Окно Database Window (Окно баш данных) Панели Приложения VisData со структурами таблиц PR и GL создаваемой базы данных. Теперь таблицы нужно заполнить конкретными записями. Но если мы хотим, чтобы в дальнейшем записи таблиц БД автоматически упорядочивались по заданному полю, необходимо создать, так называемый, индекс таблицы. Для этого с помощью панели Add Index, ввести в поле окна Name имя поля, которое хотим сделать индексным, щелкнуть по нему, чтобы включить ею в список Indexed Fields. Заполнение созданных таблиц БД исходными данными. Щелчком правой кнопкой мыши по таблице PR или GL раскроем контекстное меню выбора опций, являющееся узловым (начальным) инструментом разработки баз данных. Выбрав опцию Open, раскроем окно Модификаций таблиц базы данных. Оно является исходным инструментом выбора видов работ (видов модификаций) с таблицами баз данных и содержит набор 8-и опций. Рисунок 10. Окно Модификаций таблиц базы данных Данные отображаются в табличном формате, удобном для ввода новых записей и редактирования текущей и ранее введенных записей (линейка опций окна Модификаций таблиц базы данных содержит опцию редактирования Edit - рис. 10). Начинаем процесс заполнения указанных полей конкретными значениями первой записи. Нажимаем Add. Для перехода к следующему полю записи можно пользоваться клавишей Enter. По окончании заполнения всех полей первой записи щелкнуть на кнопке Update (Обновить) - в результате набранная запись будет физически записана в файл создаваемой базы данных, в таблицу PR и восстановится окно модификаций. Для перехода к новой записи - щелчок левой клавишей по кнопке Add. Нажатие кнопки Close после ввода последней записи завершает ввод записей в таблицу создаваемой Базы данных. Аналогично создадим таблицу GL. Алгоритм чтения таблицы PR Алгоритм чтения таблицы GL Создание пользовательского меню Меню - один из способов диалога пользователя с информационной системой. Меню представляет собой список Пунктов, из которого следует выбрать необходимый. Использование большого количества командных кнопок связано с неудобствами. Возникает неясность в последовательности их активизации. Разумная альтернатива - создание собственного меню проекта. В системе проектирования VB 6.0 создание Меню осуществляется с помощью Редактора меню Menu Editor. Окно редактора открывается на активной форме тремя способами: v Главное Меню - Инструменты - Редактор меню (меню Editor); v Нажатием на линейке инструментов Главной панели системы VB 6.0 кнопки; v Нажатием клавиш CTRL + E Рисунок 11. Окно редактора меню Обычно меню состоит из нескольких уровней. Верхний - это строка меню, которую называют Головным меню. Каждый пункт Головного меню может включать подменю из одного или нескольких пунктов. Каждый следующий пункт, в свою очередь, может включать свое подменю и т.д. Открываем окно редактора меню на Form1. Form1 используется как основная. В окне редактора и осуществим конструирование Пользовательского меню. После вызова редактора требуется заполнить его необходимыми данными. Сначала в окно Caption (заголовок) вводится имя пункта меню, под которым оно будет выводиться в строке меню на форме. Для быстрого открытия меню в поле Заголовок можно указать т.н. горячую клавишу. Это делается записью амперсанда (&) перед соответствующей буквой. Затем нажимаемся TAB и вводится в окно Имя уникальное имя пункта Меню в программе. Оно должно состоять из следующих частей: v Префикса mnu, указывающего, что имя относится к меню; v Собственного имени. Кроме свойств Заголовок, Имя элементы меню имеют еще три свойства, могущие принимать значение True/False: Отмечено (Checked) --позволяет отметить выбранный элемент символом , Включено (Enabled) - позволяет включить или выключить команды меню во время выполнения программы символом . Видимо (Visible) -позволяет отобразить или скрыть отдельные элементы меню (вместо блокировки) символом Элементы конструирования структуры Меню позволяют: устанавливать уровни Меню стрелками: смещает элемент на уровень ниже, смещает элемент на уровень выше, перемещают элементы в списке элементов одного уровня перемещать указатель к следующему Меню («Дальше» (Next), добавлять пункт Меню («Вставить» (Insert), удалять пункт Меню («Удалить» (Delete)). Рисунок 12. Созданное Меню в Окне Редактора По завершении создания меню нажать ОК и созданное Меню появится на форме Form1-отображается верхний Уровень Меню - Головное Меню. Меню активное. Для раскрытия любого пункта меню достаточно мышкой щелкнуть на выбранном пункте. Решение При решении данной курсовой работы я решил выполнить её на одной форме, то есть все пункты меню кроме Vihod(Выход) служат для распечатки таблиц, формирования и выдачи справок, создания документа на 1 форме. Меню Рисунок 13. Пользовательское Меню Private Sub mnuVihod_Click() End End Sub Вид формы Рисунок 14 .Экранная форма Glav_Form, обеспечивающая просмотр таблиц, выдачи справок и выходного документа(с использованием Пользовательского меню) Свойства Glav_Form: Name= Glav_Form Caption= Курсовой проект Дегтярев Денис ГиМУ 1-4 №8. Height=6780 Left=105 LinkTopic=Form1 ScaleHeight=5940 ScaleWidth=13350 Top=105 Width=13590 Пояснение Так как почти все элементы будут использоваться в более чем одной процедуре, то их свойства будут указаны сразу для избегания лишней путаницы. Свойства Элемента Data1 (таблица PR,справка № 1,3 и документ): Name =Data1 Caption = Data1_Таблица_PR Connect =Access DatabaseName = D:\кп\Курсовая 2\file 1.mdb Height = 495 Left = 240 RecordsetType =0 - Table RecordSource =PR Top = 1320 Width = 6375 Свойства элементов связанных с Data1(таблица PR,справка № 1,3 и документ): Text1(0) DataField = “Cod pr” DataSourse = Data1 Height = 495 Index =0 Left = 240 TabIndex = 9 Top = 600 Width = 1215 Text1(1) DataField = “Name pr” DataSourse = Data1 Height = 495 Index =1 Left = 1680 TabIndex =8 Top =600 Width = 2175 Text1(2) DataField = “Zis” DataSourse = Data1 Height = 495 Index =2 Left = 4080 TabIndex =7 Top =600 Width = 1215 Text1(3) DataField = “V vip” DataSourse = Data1 Height = 495 Index =3 Left = 5520 TabIndex =6 Top =600 Width = 1335 Свойства элементов Label (метка) для PR. Label1(0) Caption = «Код предприятия» Height = 255 Index =0 Left = 120 TabIndex =21 Top =240 Width = 1335 Label1(1) Caption = «Наименование предприятия» Height = 255 Index =1 Left = 1680 TabIndex =20 Top =240 Width = 2175 Label1(2) Caption = «Численность персонала» Height = 255 Index =2 Left = 4200 TabIndex =19 Top =240 Width = 1095 Label1(3) Caption = «Объем выпуска продукции (в руб)» Height = 495 Index =3 Left = 5520 TabIndex =18 Top =240 Width = 1335 Свойства элемента MSFlexGrid и Label3 (таблица PR и справка № 2) MSFlexGrid Name =Flp Cools =2 FixedCools =0 FixedRows =1 Height =1695 Left =1080 Rows =2 TabIndex =5 Top =2400 Width =4335 Label3 Caption = « »Height = 255 Left = 1080 TabIndex =13 Top =2040 Width = 4335 Свойства Элемента Data2 (таблица GL,справка № 2,3 и документ): Name =Data2 Caption = Data2_Таблица_GL Connect =Access DatabaseName = D:\кп\Курсовая 2\file 1.mdb Height = 495 Left = 7080 RecordsetType =0 - Table RecordSource =GL Top = 1320 Width = 5895 Свойства элементов связанных с Data2(таблица GL,справка № 2,3 и документ): Text2(0) DataField = “Cod pr” DataSourse = Data2 Height = 495 Index =0 Left = 7320 TabIndex = 4 Top = 600 Width = 1315 Text2(1) DataField = “Zis” DataSourse = Data2 Height = 495 Index =1 Left = 8880 TabIndex =3 Top =600 Width = 1455 Text2(2) DataField = “Ul” DataSourse = Data2 Height = 495 Index =2 Left = 10560 TabIndex =2 Top =600 Width = 1215 Text2(3) DataField = “Dal” DataSourse = Data2 Height = 495 Index =3 Left = 11880 TabIndex =1 Top =600 Width = 1335 Свойства элементов Label (метка) для GL. Label2(0) Caption = «Код предприятия» Height = 255 Index =0 Left = 7320 TabIndex =17 Top =240 Width = 1335 Label2(1) Caption = «Отсутствие жилья» Height = 255 Index =1 Left = 8880 TabIndex =16 Top =240 Width = 1455 Label2(2) Caption = «Нуждающиеся в улучшении» Height = 435 Index =2 Left = 10560 TabIndex =15 Top =120 Width = 1155 Label2(3) Caption = «Живущие далеко от предприятия» Height = 495 Index =3 Left = 11880 TabIndex =14 Top =120 Width = 1335 Свойства элемента MSFlexGrid и Label4 (таблица GL и справка № 1) MSFlexGrid Name =Flg Cools =2 FixedCools =0 FixedRows =1 Height =1695 Left =1080 Rows =2 TabIndex =10 Top =2400 Width =4215 Label4 Caption = “ ” Height = 255 Left = 8160 TabIndex =12 Top =2040 Width = 3975 Свойства элемента MSFlexGrid и Label5(справка №3 и документ) MSFlexGrid Name =Fls Cools =2 FixedCools =0 FixedRows =1 Height =1575 Left =4080 Rows =2 TabIndex =10 Top =4320 Width =5175 Label5 Caption = “ ” Height = 495 Left = 1200 TabIndex =11 Top =4680 Width = 2775 Вид формы с таблицей PR Рисунок 15. Форма с таблицей PR. Private Sub mnuRs_PR_Click() Dim K As Integer Dim I As Integer, J As Integer Data1.Recordset.MoveFirst K = Data1.Recordset.RecordCount Label3.Caption = "Таблица Предприятия" Flp.Rows = K + 1 Flp.Cols = 4 For I = 1 To K For J = 1 To 4 Flp.TextMatrix(I, J - 1) = Text1(J - 1) If I = 1 Then Flp.TextMatrix(I - 1, J - 1) = Data1.Recordset.Fields(J - 1).Name Next J Data1.Recordset.MoveNext Next I End Sub Форма с таблицей GL Рисунок 16. Вид формы с таблицей GL Private Sub mnuRs_Gl_Click() Dim K As Integer Dim I As Integer, J As Integer K = Data1.Recordset.RecordCount Label4.Caption = "Таблица Обеспеченность жильём" Data2.Recordset.MoveFirst Flg.Rows = K + 1 Flg.Cols = 4 For I = 1 To K For J = 1 To 4 Flg.TextMatrix(I, J - 1) = Text2(J - 1) If I = 1 Then Flg.TextMatrix(I - 1, J - 1) = Data2.Recordset.Fields(J - 1).Name Next J Data2.Recordset.MoveNext Next I End Sub Справка №1 Таблица PR Private Sub mnuSpravka1_Click() Dim I As Integer, T As Integer, L As Integer, J As Integer Dim Kz As Integer Dim Q As Variant Flg.Cols = 3: Flg.Rows = 1: Kz = 0 Label4.Caption = "Справка №1(по таблице PR)" Flg.TextMatrix(0, 0) = Data1.Recordset.Fields(1).Name Flg.TextMatrix(0, 1) = Data1.Recordset.Fields(3).Name Data1.Recordset.MoveFirst For I = 1 To Data1.Recordset.RecordCount If Data1.Recordset.Fields(3).Value > 20000000 Then Flg.Rows = Flg.Rows + 1: Kz = Flg.Rows - 1 Flg.TextMatrix(Kz, 0) = Data1.Recordset.Fields(1).Value Flg.TextMatrix(Kz, 1) = Data1.Recordset.Fields(3).Value Flg.TextMatrix(Kz, 2) = Data1.Recordset.Fields(2).Value End If Data1.Recordset.MoveNext Next I If Kz > 1 Then For I = 1 To Kz - 1 T = I For L = I + 1 To Kz If Val(Flg.TextMatrix(T, 2)) > Val(Flg.TextMatrix(L, 2)) Then T = L Next L If T <> I Then For J = 0 To 2 Q = Flg.TextMatrix(I, J): Flg.TextMatrix(I, J) = Flg.TextMatrix(T, J) Flg.TextMatrix(T, J) = Q Next J End If Next I End If Flg.Cols = 2 If Kz = 0 Then Flg.TextMatrix(Kz, 0) = "Нет таких записей в таблице PR" End Sub Рисунок 17. Вид справки №1 Справка №2 Таблица GL Private Sub mnuSpravka2_Click() Dim I As Integer Dim Kz As Integer Label3.Caption = "Справка №2(по таблице GL)" Flp.Cols = 2: Flp.Rows = 1: Kz = 0 Flp.TextMatrix(0, 0) = Data2.Recordset.Fields(0).Name Data2.Recordset.MoveFirst For I = 1 To Data2.Recordset.RecordCount If Data2.Recordset.Fields(3).Value > 15 Then Flp.Rows = Flp.Rows + 1: Kz = Flp.Rows - 1 Flp.TextMatrix(Kz, 0) = Data2.Recordset.Fields(0).Value Flp.TextMatrix(Kz, 1) = Data2.Recordset.Fields(1).Value End If Data2.Recordset.MoveNext Next I If Kz > 1 Then For I = 1 To Kz - 1 T = I For L = I + 1 To Kz If Val(Flp.TextMatrix(T, 1)) < Val(Flp.TextMatrix(L, 1)) Then T = L Next L If T <> I Then For J = 0 To 1 Flp.TextMatrix(T, J) = Q Next J End If Next I End If Flp.Cols = 1 If Kz = 0 Then Flp.TextMatrix(Kz, 0) = "Нет таких записей в таблице GL" End Sub Рисунок 18. Вид справки №2 Справка №3 Таблица PR и GL Private Sub mnuSpravka3_Click() Dim I As Integer, J as Integer Dim Kz As Integer Label5.Caption = "Справка №3(по таблицам GL и PR)" Fls.Cols = 5: Fls.Rows = 1: Kz = 0 Fls.TextMatrix(0, 0) = Data1.Recordset.Fields(1).Name Fls.TextMatrix(0, 1) = Data1.Recordset.Fields(2).Name Fls.TextMatrix(0, 2) = Data1.Recordset.Fields(3).Name Fls.TextMatrix(0, 3) = Data2.Recordset.Fields(1).Name Fls.TextMatrix(0, 4) = Data2.Recordset.Fields(2).Name Data1.Recordset.MoveFirst For I = 1 To Data1.Recordset.RecordCount Data2.Recordset.MoveFirst For J = 1 To Data2.Recordset.RecordCount If Data2.Recordset.Fields(0) = Data1.Recordset.Fields(0) Then If Data1.Recordset.Fields(2).Value > 5000 And Data2.Recordset.Fields(1).Value > 20 And Data2.Recordset.Fields(2).Value > 20 Then Fls.Rows = Fls.Rows + 1: Kz = Fls.Rows - 1 Fls.TextMatrix(Kz, 0) = Data1.Recordset.Fields(1).Value Fls.TextMatrix(Kz, 1) = Data1.Recordset.Fields(2).Value Fls.TextMatrix(Kz, 2) = Data1.Recordset.Fields(3).Value Fls.TextMatrix(Kz, 3) = Data2.Recordset.Fields(1).Value Fls.TextMatrix(Kz, 4) = Data2.Recordset.Fields(2).Value End If End If Data2.Recordset.MoveNext Next J Data1.Recordset.MoveNext Next I If Kz = 0 Then Fls.TextMatrix(Kz, 0) = "Нет записей удовлетворяющих условие" End Sub Рисунок 18. Вид справки №3 Документ Private Sub mnuDoc1_Click() Dim I As Integer, J as Integer Dim Kz As Integer Label5.Caption = "Документ" Fls.Cols = 3: Fls.Rows = 1: Kz = 0 Fls.TextMatrix(0, 0) = Data1.Recordset.Fields(1).Name Fls.TextMatrix(0, 1) = "% сотрудников обеспеченных жильем" Fls.TextMatrix(0, 2) = "Продукция на одного рабочего(в руб.)" Data1.Recordset.MoveFirst For I = 1 To Data1.Recordset.RecordCount Data2.Recordset.MoveFirst For J = 1 To Data2.Recordset.RecordCount If Data2.Recordset.Fields(0) = Data1.Recordset.Fields(0) Then If Data2.Recordset.Fields(1).Value + Data2.Recordset.Fields(2).Value + Data2.Recordset.Fields(3).Value <= 30 Then Fls.Rows = Fls.Rows + 1: Kz = Fls.Rows - 1 Fls.TextMatrix(Kz, 0) = Data1.Recordset.Fields(1).Value Fls.TextMatrix(Kz, 1) = 100 - (Data2.Recordset.Fields(1).Value + Data2.Recordset.Fields(2).Value + Data2.Recordset.Fields(3).Value) Fls.TextMatrix(Kz, 2) = Data1.Recordset.Fields(3).Value / Data1.Recordset.Fields(2).Value End If End If Data2.Recordset.MoveNext Next J Data1.Recordset.MoveNext Next I If Kz = 0 Then Fls.TextMatrix(Kz, 0) = "Нет записей удовлетворяющих условие" End Sub Рисунок 20. Документ Заключение В данной курсовой работе по созданию и обработке Баз данных средствами Visual Basic 6.0, в разрабатываемом программном проекте я предпочел использовать пользовательское меню по следующим причинам: v Отпадает необходимость создания отдельных экранных форм для решения каждой задачи программного проекта. v Намного упрощается работа с проектом, так как результаты отдельных задач проекта не обращаются к другим, формам. v На экранной форме проекта отсутствую командные кнопки, роль которых на себя берут пункты меню. v Управление проектом становиться гораздо проще, легче и даже комфортнее - устраняется неясность в последовательности активизации командных кнопок при выполнении программного проекта. v Программный проект объединен в единое целое.
|