Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Практика / 5 семестр / Лабораторная №4.doc
Скачиваний:
44
Добавлен:
23.03.2015
Размер:
361.47 Кб
Скачать

Формирование таблицы стоимости почасовых работ

Консультанты нередко сталкиваются с задачей оценки объема проделанной ими работы. Довольно часто они вовлечены в несколько проектов, затрачивая на каждый из них по несколько часов. В этом случае полезно иметь под рукой таблицу, в которой явно указано, какой счет должен быть выставлен, скажем, за работу по три часа в день в течение четырех дней по ставке 25 рублей в час.

Для генерирования такой таблицы была создана процедура PrintBillingChart, в которой использованы некоторые из рассмотренных в настоящей главе инструкций передачи управления. Вот ее полный текст:

Sub PrintBillingChart (curBaseRate As Currency, _

intMaxDays As Integer)

'Создание таблицы сумм оплаты за почасовую работу

'в пределах заданного количества дней

Dim intDays As Integer

Dim intHours As Integer

If intMaxDays > 6 Then

Debug.Print "Эта процедура ограничен;

Else

'Создание заголовка

Debug.Print "Почасовая ставка "& _

Format(curBaseRate, "Currency")

' Создание шапки таблицы

Debug.Print vbTab;

intDays = 0

Do Until intDays = intMaxDays

intDays = intDays + 1

Debug.Print CStr(intDays)& "дней" & vbTab;

Loop

Debug.Print

'Формирование самой таблицы

For intHours = 1 To 8

Debug.Print CStr(intHours) & vbTab;

intDays = 0

Do Until intDays = intMaxDays

intDays = intDays + 1

Debug.Print Format(intDays * intHours * curBaseRate, _

"Currency") & vbTab;

Loop

Debug.Print

Next intHours

End If

End Sub

В окне Immediate при вызове PrintBillingChart 25,4:

Почасовая ставка 25

1 дней

2 дней

3 дней

4 дней

1

25,00р.

50,00р.

75,00р.

100,00р.

2

50,00р.

100,00р.

150,00р.

200,00р.

3

75,00р.

150,00р.

225,00р.

300,00р.

4

100,00р

200,00р.

300,00р.

400,00р.

5

125,00р

250,00р.

375,00р.

500,00р.

6

150,00р

300,00р.

450,00р.

600,00р.

7

175,00р

350,00р.

525,00р.

700,00р.

8

200,00р

400,00р.

600,00р.

800,00р.

Как следует из таблицы, четырехдневная работа по три часа в день со ставкой 25 рублей в час оценивается в 300 рублей.

Открытие форм и обработка ошибок

После того как вы освоитесь с языком VBA, вам непременно захочется создавать собственные процедуры обработки событий или преобразовывать существующие макросы в процедуру событий. Это позволит впоследствии выявить ошибки, возникающие при обработке событий и, к тому же, хранить всю программу в одном месте (в редакторе VBE), а не распылять ее по множеству макросов.

База данных TimeTrack содержит шесть макросов. Пять из них вызываются из формы Switchboard и служат для открытия других форм. Вот пример программы, которым можно заменить все эти макросы и вставить собственную обработку ошибок:

Option Compare Database

Option Explicit

Private Sub cmdBillingReport13_Click()

On Error GoTo HandleErr

DoCmd.OpenForm "BillingReportSetupl3"

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number &":"&_

Err.Description & "в cmdBillingReportl3_Click"

Resume ExitHere

End Sub

Private Sub cmdClients_Click()

On Error GoTo HandleErr

DoCmd.OpenForm "Clients"

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number & ": " & _

Err.Description & "в cmdClients_Click"

Resume ExitHere

End Sub

Private Sub cmdEmployees_Click()

On Error GoTo HandleErr

DoCmd.OpenForm "Employees"

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number & " : " & _

Err.Description & "в cmdEmployees_Click"

Resume ExitHere

End Sub

Private Sub cmdProjects_Click()

On Error GoTo HandleErr

DoCmd.OpenForm "Projects"

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number & ": " & _

Err.Description

Resume ExitHere

End Sub

Private Sub cmdTimeslips_Click()

On Error GoTo HandleErr

DoCmd.OpenForm "Timeslips"

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number & ": " & Err.Description

Resume ExitHere

End Sub

Предупреждение:

Помните, что вам нужно изменить названия кнопок формы так, чтобы они соответствовали программе.

В этом фрагменте программы продемонстрирована простая модель обработки ошибок, обычно применяемая по умолчанию, когда не требуется производить более сложные действия. Каждая из процедур начинается с инструкции on Error Goto, за ней следует метка, к которой будет осуществляться безусловный переход при возникновении ошибок. Завершается выполнение каждой процедуры оператором Exit Sub, возвращающим управление форме. Именно этот оператор выполняется первым, если при открытии формы не возникает ошибок; ему же передается управление после обработки ошибок в случае наличия таковых с помощью оператора Resume. Внутри тела фрагмента обработки ошибки открывается окно сообщения, отображающее некоторые свойства встроенного объекта Err. В этом объекте хранится информация о последней ошибке.

Последний макрос базы данных TimeTrack используется формой BillingReportSetup13 для открытия отчета. Преобразование этого сценария в процедуру VBA будет лишь немного сложнее обычного открытия формы, поскольку дополнительно потребуется указать, что отчет должен открываться в режиме предварительного просмотра:

Private Sub cmdOpenReport_Click()

On Error GoTo HandleErr

DoCmd.OpenReport "BillingReportl3", acViewPreview, , , , _ chkSummary

ExitHere:

Exit Sub

HandleErr:

MsgBox "Ошибка " & Err.Number & ": " & _

Err.Description & "в cmdBillingReportl3_Click"

Resume ExitHere

End Sub

Если с помощью обозревателя объектов посмотреть на метод OpenReport объекта DoCmd, то можно увидеть, что он имеет один параметр, содержащий список аргументов соответствующего макроса. Вторым параметром данного метода является способ открытия отчета. В данном случае этому аргументу мы передаем значение встроенной константы vbViewPreview, определяющее режим предварительного просмотра отчета. В общем случае аргументы метода DoCmd следуют в том же порядке, что и аргументы соответствующего макроса, что значительно упрощает процесс преобразования макросов в процедуры на языке VBA.

Соседние файлы в папке 5 семестр