Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка по курсовой работе

.pdf
Скачиваний:
22
Добавлен:
27.03.2016
Размер:
1.32 Mб
Скачать

ReadRec (n) ‘Процедура «Читать n-ую запись» из ячеек таблицы и писать в поля формы1

End Sub

6.10. В отклике кнопки «Добавить запись» содержится обращение к процедуре WriteRec – писать запись из полей формы1 в ячейки таблицы. Для написания кода этой процедуры перейдите в модуль, где содержится код процедуры ReadRec, и далее наберите код процедуры WriteRec.

Public Sub WriteRec(rec)’ rec – номер записи, передаваемой в проце-

дуру

If rec > 0 Then ‘ номер записи должен быть положительным

With UserForm1 ‘Объявление структурной скобки для объекта фор-

ма1

В нижележащих строках данные из полей формы1 присваиваются ячейкам столбцов с 1 по 8 и строк, соответствующих значению rec+5, рабочего листа Решение таблицы. rec – номер переданной записи, к ней прибавляется число 5, потому, что данные в таблице расположены с 6 строки. Если rec=1, то rec+5=6. В ячейках 9 столбца производится вычисление суммарной производительности самосвалов.

Cells(rec + 5, 1).Value = .TextBox8.Value ‘

Cells(rec + 5, 2).Value = .TextBox1.Value

Cells(rec + 5, 3).Value = .TextBox2.Value

Cells(rec + 5, 4).Value = .TextBox3.Value

Cells(rec + 5, 5).Value = .TextBox4.Value

Cells(rec + 5, 6).Value = .TextBox5.Value

Cells(rec + 5, 7).Value = .TextBox6.Value

Cells(rec + 5, 8).Value = .TextBox7.Value

‘ Формула в следующей строке записана в адресации R1C1

Cells(rec + 5, 9).FormulaR1C1 = "=SUM(RC[-6]:RC[-1])" ‘ End With ‘‘ Закрытие структурной скобки

End If ‘ Конец оператора if End Sub ‘Конец процедуры

Формулу в адресации R1C1 можно получить, переключив вид адресации командой СЕРВИС – Параметры – вкладка Общие – Стиль ссылок R1C1. Поставьте курсор в ячейку с формулой, в строке формул отобразится её написание в формате R1C1. Формулу можно скопировать из строки формул и вставить в код программы.

6.11 Программирование отклика кнопки «Удалить запись». Откройте форму1, затем 2 раза щелкните по кнопке «Удалить запись» и напишите процедуру

Private Sub CommandButton2_Click() DelRec (n)’Процедура удаление записи

30

ReadRec (n)’

End Sub

6.12. Написание кода процедуры DelRec. Перейдите в модуль, где содержатся коды процедур ReadRec и WriteRec, и далее наберите код процедуры DelRec.

Public Sub DelRec(rec)

‘Процедура выполняет действия перезаписи ячеек 2 – 9 столбцов таблицы i+1 строки на i строку.

i = rec+5

While Worksheets(1).Cells(i , 1).Value <> "" ‘ Цикл выполняется до тех пор, пока в ячейках 1 столбца не будет пусто.

Cells(i , 2).Value = Cells(i + 1, 2).Value

Cells(i, 3).Value = Cells(i + 1, 3).Value

Cells(i, 4).Value = Cells(i + 1, 4).Value

Cells(i, 5).Value = Cells(i + 1, 5).Value

Cells(i, 6).Value = Cells(i + 1, 6).Value

Cells(i, 7).Value = Cells(i + 1, 7).Value

Cells(i, 8).Value = Cells(i +1, 8).Value

Cells(i, 9).FormulaR1C1 = Cells(6, 9).FormulaR1C1 i = i + 1

Wend End Sub

6.13Программирование отклика кнопки «Посмотреть Итоги». Откройте форму1, 2 раза щелкните по кнопке «Посмотреть Итоги» и напишите процедуру

Private Sub CommandButton4_Click() UserForm1.Hide ‘Скрыть форму1 UserForm2.Show’ Показать форму2 End Sub

6.14Программирование процедур откликов кнопок формы2. Проект формы2 (см. рисунок 6).

Для кнопки «ПОКАЗАТЬ» необходимо из 21 строки таблицы вывести в надписи значения ячеек в формате с двумя знаками после запятой.

Private Sub CommandButton1_Click()

FormatNumber – функция форматирования чисел из ячеек 21 строки и соответствующих столбцов с 3 по 8. После форматирования числа будут с двумя знаками после запятой.

Label1.Caption = FormatNumber(Cells(21, 3), 2) Label2.Caption = FormatNumber(Cells(21, 4), 2) Label3.Caption = FormatNumber(Cells(21, 5), 2)

31

 

 

 

 

 

 

 

 

Label4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Label1

 

 

 

 

 

 

 

 

 

 

 

Label5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Label2

 

 

 

 

 

 

 

 

 

 

 

Label6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Label3

 

 

 

 

Label28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CommandButton3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Label30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CommandButton1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CommandButton2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 6. Проект формы2

Label4.Caption = FormatNumber(Cells(21, 6), 2) Label5.Caption = FormatNumber(Cells(21, 7), 2) Label6.Caption = FormatNumber(Cells(21, 8), 2)

Label28.Caption = FormatNumber(Cells(23, 9), 2)

Из ячейки (25,9) число передается в целом формате.

Label30.Caption = FormatNumber(Cells(25, 9), 0) End Sub

Программирование кнопки «ГРАФИК»

Private Sub CommandButton3_Click()

График ‘Вызов на выполнение макроса График

End Sub

Макрос «ГРАФИК» получен действиями п.5. Sub График()

'График Макрос

'Макрос записан 21.11.2010 (timuhina) Range("A15:H15,A21:H21").Select Charts.Add

ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _ "График|гистограмма 2"

ActiveChart.SetSourceData

Source:=Sheets("Решение").Range("A15:H15,A21:H21") _

32

, PlotBy:=xlRows

ActiveChart.SeriesCollection(1).Values = "=Решение!R15C3:R15C8" ActiveChart.SeriesCollection(2).Values = "=Решение!R21C3:R21C8" ActiveChart.Location Where:=xlLocationAsNewSheet

With ActiveChart

.HasTitle = False

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "№ само-

свала"

.Axes(xlValue, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = _ "Количество самосвалов"

.Axes(xlCategory, xlSecondary).HasTitle = False

.Axes(xlValue, xlSecondary).HasTitle = True

.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text = _

"Производительность самосвалов, тыс.т"

End With

With ActiveChart.Axes(xlCategory)

.HasMajorGridlines = True

.HasMinorGridlines = False End With

With ActiveChart.Axes(xlValue)

.HasMajorGridlines = True

.HasMinorGridlines = False End With ActiveChart.HasLegend = True ActiveChart.Legend.Select Selection.Position = xlTop

End Sub

Результат выполнения макроса – построение графика – представлен на рисунке 2.

Программирование отклика кнопки «Закрыть форму».

Откройте форму2, затем 2 раза щелкните по кнопке «ЗАКРЫТЬ» и напишите процедуру.

Private Sub CommandButton2_Click() UserForm2.Hide’ Скрыть форму2 End Sub

33

7. ИСПОЛЬЗОВАНИЕ ИНТЕРФЕЙСА ДЛЯ РАБОТЫ С ТАБЛИЦЕЙ

7.1. Добавление записей в таблицу. Нажмите на кнопку «ДОБАВЛЕНИЕ И УДАЛЕНИЕ автосамосвалов», расположенную на рабочем листе. Откроется форма1 (см. рисунок 7), счетчиком установите значения полей на первой пустой записи (в нашем примере – запись 4), заполните поля формы1 значениями, нажмите на кнопку «Добавить запись», данные перепишутся в таблицу. По введённым данным рассчитается суммарная производительность. Добавьте ещё записи в таблицу.

Рисунок 7. Добавление записей с помощью формы 1.

7.2. Удаление записей из таблицы. Счетчиком формы1 выберите номер, удаляемой записи. В полях формы отразятся значения ячеек таблицы из этой записи. Нажмите на кнопку «Удалить запись». В таблице запись будет удалена, нижележащие записи поднимутся вверх. В полях формы отразятся значения ячеек следующей строки (см. рисунок 8). В примере удалена 4 запись – самосвал ВК 889.

34

Рисунок 8. Удаление 4 записи из таблицы с помощью формы1.

Рисунок 9. Запуск формы2.

35

7.3. Вывод итоговых результатов. Нажмите на кнопку «Посмотреть ИТОГИ», расположенную на форме1. Будет запущена форма2 (см. рисунок 9). Нажмите на кнопку «ПОКАЗАТЬ» формы2. В форму2 будут выведены итоговые показатели с листа Excel (см. рисунок 10).

Рисунок 10. Просмотр результатов расчета

8 РАЗРАБОТКА БАЗЫ ДАННЫХ

8.1 В программе Access создаем базу данных [5], в которой будут храниться данные, аналогичные тем, что приведены таблице Excel.

На основании приведенных данных в таблице Excel создаем таблицу 3, содержащую описание полей производительности автосамосвалов по месяцам: январь, февраль, март, апрель, май, июнь. Эту таблицу создадим в среде Access.

Таблица 3. Проектирование таблицы «Производительность»

Имя поля

Тип

Свойства поля

Подпись

Код самосвала

Счетчик

 

 

Номер самосвала

Числовой

 

 

Январь

Числовой

 

 

Февраль

Числовой

 

 

Март

Числовой

 

 

Апрель

Числовой

 

 

Май

Числовой

 

 

Июнь

Числовой

 

 

36

8.2 Загружаем программу Access и выбираем команду «Создание новой базы данных», задаем имя базы данных Автосамосвалы.mdb. Выбираем объект «Таблицы», команду «Создать таблицу» в режиме «Конструктор». Вводим имена полей, задаем тип полей и заносим характеристики полей создаваемой таблицы (см. таблицу 3). После конструирования таблицы сохраняем её с заданием имени таблицы "Производительность". Открываем созданную таблицу (см. рисунок 11) и заносим в неё значения аналогичные таблице Excel (см. рисунок 1 или таблицу 1).

Рисунок 11. Таблица «Производительность» 8.3.1 В окне базы данных выбираем объект «Формы» и команду

«Создать» – «Автоформа: в столбец». Форму сохраняем под именем "Производительность" (см. рисунок 12).

Рисунок 12. Форма «Производительность»

37

8.4 Разработка запроса с вычисляемым полем по суммарной производительности каждого самосвала. Переходим на вкладку «Запросы». Выбираем «Создание запроса в режиме конструктора», выбираем таблицу «Производительность», отбираем все поля из этой таблицы в запрос. При закрытии запроса сохраняем его, открываем, проверяем правильность выполнения. Создаем вычисляемое поле в запросе, для чего открываем запрос в Конструкторе, выбираем свободное поле, в конце занятых полей, открываем «Построитель выражений» и формируем в нем выражение для вычисляемого поля «СумПроизв» (см. рисунок 13).

Рисунок 13. Формирование вычисляемого поля в «Построителе выражений».

Сохраняем и выполняем запрос, результат выполнения запроса представлен на рисунке 14.

Рисунок 14. Запрос «Суммарная производительность»

Запрос – это динамический набор данных, которые отражаются в момент его выполнения. В системе запрос создается и хранится в виде кода SQL.

38

Для просмотра кода SQL созданного запроса откройте его в Конструкторе запросов и выполните команду ЗАПРОС – Запрос SQL. Ниже приведен код запроса «Суммарная производительность».

SELECT Производительность.НомерСамосвала, Производительность.Январь, Производительность.Февраль, Производительность.Март, Производительность.Апрель, Производительность.Май, Производительность.Июнь, [Январь]+[Февраль]+[Март]+[Апрель]+[Май]+[Июнь] AS СумПроизв

FROM Производительность;

После слова SELECT указаны поля, отобранные в запрос и в том числе вычисляемое поле. После слова FROM указано имя таблицы, из которой отобраны поля.

8.5Отчет разрабатывается с использованием «Мастера отчетов», основой для отчета могут служить таблицы и запросы. В нашем случае основой отчета будет запрос, отбираем в него нужные поля из запроса, если данные можно сгруппировать, то нужно выполнить группировку и получить итоги по группе. В нашем примере группировки нет, поэтому итоговые поля вставим в отчет вручную в режиме «Конструктора». Для этого после создания отчета «Мастером» откройте его, посмотрите на результат, чтобы увидеть все недостатки и переключите отчет в режим «Конструктора».

8.6Добавление вычисляемого поля в отчет (см. рисунок 15).

Надпись

Поле ввода

Надпись

Рисунок 15. Добавление вычисляемого поля в отчет в режиме «Конструктора»

39