Создание и заполнение баз данных

Содержание.

Введение…………………………………………………………………………. .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 и Visual Basic семейства MS Qffice. В настоящее время практически повсеместно используется пакет прикладных программ Microsoft Office, в стандартный набор которого входит MS Access – мощная система управления базами данных. Access интегрирован с прочими приложениями пакета, что позволяет применять богатые возможности компонентов. Office. Access позволяет создавать дружественный интерфейс, а также – решать специальные задачи при помощи программирования на языке Visual Basic for Application (VBA), в основе которого лежит язык Basic. Visual Basic стал очень популярным в последнее время благодаря лёгкости создания программных продуктов, удобству и быстроте доступа к базам данных и глубокой интеграции с Microsoft Office, что способствует развитию навыков объектного и визуального проектирования.

1. Создание и заполнение базы данных.

1.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

   

End Sub

Аналогично  указываем процедуры других кнопок. 

Меню  в рабочем состоянии:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2.Экспорт данных в Visual Basic 6.0 (с использованием элементов управления DATA и MSFlexGrid) 

     Разработать форму и программный код в  Visual  Basic, обеспечивающий доступ к базе данных (через элемент Data) и позволяющий: 

  1. Для  каждого города и  района вывести информацию о ресурсах с минимальным расходом.(ресурс, расход).
  2. По выбираемым ресурсам вывести информацию о  районе и городе с максимальным расходом.
 

     Для работы с базой данных в программном  средстве Visual Basic необходимо сохранить созданную базу данных в формате 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   'переход к первой записи

    For I = 1 To Data1.Recordset.RecordCount    'цикл отображения записей таблицы в гибких сетках

        For J = 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)

        Next J

        Data1.Recordset.MoveNext  'переход к следующей записи таблицы 1

    Next I

    Data1.Recordset.MoveFirst   'возврат к первой записи

    For J = 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   'переход к первой записи

    For I = 1 To Data2.Recordset.RecordCount    'цикл отображения записей таблицы в гибких сетках

        For J = 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)

        Next J

        Data2.Recordset.MoveNext  'переход к следующей записи таблицы 1

    Next I

    Data2.Recordset.MoveFirst   'возврат к первой записи

    For J = 1 To 8          'выравниваем ширину столбцов

        Grid.ColWidth(J - 1) = Grid.Width / 9

    Next J

End Sub 

'ДОБАВЛЕНИЕ  ЗАПИСЕЙ

Private Sub Command2_Click()      'в таблицу 1

    Dim Reply As VbMsgBoxResult

 Reply = MsgBox("Если будете вводить новую запись, нажмите кнопку OK", _

    vbOKCancel, "Ввод новой записи")

    If Reply = vbOK Then

    Text1(0).SetFocus       'Остановка, текстовые окна пустые, в них нужно ввести запись

    Data1.Recordset.AddNew

    End If

    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

    End If

    MsgBox ("После ввода записи нажмите левую стрелку элемента Data")

End Sub 

'УДАЛЕНИЕ ЗАПИСЕЙ

Private Sub Command3_Click()   'из таблицы 1

    Dim Reply As VbMsgBoxResult

    Reply = MsgBox("Если будете удалять текущую запись, нажмите кнопку OK", vbOKCancel, "Удаление текущей записи")

    If Reply = vbOK Then

    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 = "Код города|Код района|Название города|Название

                         _района"

    For J = 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

                 For J = 1 To Data1.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

        End If

        Data2.Recordset.MoveNext        'переходим к следующей записи таблицы1

    Next I

    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 с.