End Function


Дата добавления: 2014-11-24 | Просмотров: 1544


<== предыдущая страница | Следующая страница ==>

 

 

Приклад № 4:

В наступному прикладі створюється нова таблиця, поля таблиці та визначається ключ таблиці.

Function CreateNewTable()

Dim dbs As Database

Dim tdfNew As TableDef

Dim Indx As Index

‘Змінна dbs вказує на поточну базу даних

Set dbs = CurrentDb()

‘Змінна tdfNew вказуватиме на нову створену таблицю ‘“Підсумкові дані”

Set tdfNew = dbs.CreateTableDef("Підсумкові дані")

‘Cтворюються поля нової ‘таблиці та задається їх формат

 

With tdfNew

.Fields.Append .CreateField("Табельний номер", dbInteger)

.Fields.Append .CreateField("Кількість годин", dbInteger)

.Fields.Append .CreateField("Основна зарплатня", dbDouble)

.Fields.Append .CreateField("Сума відпустки", dbDouble)

.Fields.Append.CreateField("Доплата за інтенсивність", dbDouble)

.Fields.Append.CreateField("Доплата за шкідливість", dbDouble)

.Fields.Append .CreateField("Нічні", dbDouble)

.Fields.Append .CreateField("Премія", dbDouble)

.Fields.Append.CreateField("Сума по хворобі", dbDouble)

.Fields.Append.CreateField("Всього начислено", dbDouble)

.Fields.Append.CreateField("Сума до пенсійного фонду", dbDouble)

.Fields.Append.CreateField("Сума прибуткового податку", dbDouble)

.Fields.Append.CreateField("Сума аліментів", dbDouble)

.Fields.Append.CreateField("Сума по виконавчим листам", dbDouble)

.Fields.Append.CreateField("Фонд безробіття", dbDouble)

.Fields.Append.CreateField("Сума до фонду Чорнобиля", dbDouble)

.Fields.Append.CreateField("Всього утримано", dbDouble)

 

.Fields.Append.CreateField("Сума до виплати", dbDouble)

 

End With

‘Нова таблиця “Підсумкові дані ” додається до

‘сімейства TableDefs

dbs.TableDefs.Append tdfNew

 

With tdfNew

'створення унікального індексу (ключа таблиці)

Set Indx = .CreateIndex("SomeIndex")

’Створюється нове індексне поле

Indx.Fields.Append Indx.CreateField("Табельний номер", dbInteger)

‘Встановлюється ознака унікальності поля

Indx.Primary = True

‘Додається нове індексне поле до сімейства Indexes

.Indexes.Append Indx

End With

 

End Function

Приклад № 5:

В наступному прикладі робляться підрахунки. Є три таблиці, дані з яких підраховуються та заносяться у таблицю “Підсумкові дані”. Для доступу до записів таблиць використовується сімейство RecordSet.

 

Option Compare Database

Option Explicit

 

 

Public Function DoMath()

Dim dbs As Database

Dim Hours As Integer

Dim WholePay, PayMin, PayTax, PensTax As Double

Dim i As Long

‘Змінна dbs вказує на поточну базу даних

Set dbs = CurrentDb()

‘Далі відкриваються записи 4-ох таблиць

Dim Record1 As Recordset

Set Record1 = _

dbs.OpenRecordset("Табель виходу на роботу", dbOpenTable, dbReadOnly)

Dim Record2 As Recordset

Set Record2 = _

dbs.OpenRecordset("Підсумкові дані", dbOpenTable)

Dim Record3 As Recordset

Set Record3 = _

dbs.OpenRecordset("Начислено", dbOpenTable)

Dim Record4 As Recordset

Set Record4 = _

dbs.OpenRecordset("Утримано", dbOpenTable)

‘Переходимо на перший запис кожної таблиці

Record1.MoveFirst

Record3.MoveFirst

Record4.MoveFirst

i = 1

‘ Цикл поки не буде зроблено підрахунки по

‘ всіх записах таблиці

Do While i <= Record1.RecordCount

Hours = 0

Hours = Record1![1-й день]

Hours = Hours + Record1![2-й день]

Hours = Hours + Record1![3-й день]

…………………………………………..

Hours = Hours + Record1![30-й день]

Hours = Hours + Record1![31-й день]

‘Далі йдуть підрахунки

'Підрахунок загальної зарплатні

WholePay = Hours * Record1![Оклад] + Record3![Відпустка] + (Record3![Доплата за інтенсивність] * Hours * Record1![Оклад]) + Record3![Премія] * Hours * Record1![Оклад]

'Загальна сума утримань

PayMin = WholePay * (Record4![Пенсійний фонд] + Record4![Прибутковий податок] + Record4![Аліменти] + Record4![По виконавчим листам] + Record4![Фонд безробіття] + Record4![Фонд Чорнобиля] + Record4![Профсоюзний взнос])

'Прибутковий податок та до пенсійного фонду

Select Case WholePay

Case 17 To 85

PayTax = (WholePay * 10) / 100

Case 86 To 170

PayTax = (WholePay * 15) / 100

Case 170 To 1000

PayTax = (WholePay * 20) / 100

End Select

Select Case WholePay

Case Is <= 150

PensTax = (WholePay * 1) / 100

Case Is > 150

PensTax = (WholePay * 2) / 100

Case Is >= 3000

PensTax = (WholePay * 32) / 100

End Select

‘До таблиці “Підсумкові дані” заносимо дані, що були ‘підраховані

With Record2

.AddNew

![Табельний номер] = Record1![Табельний номер]

![Кількість годин] = Hours

![Основна зарплатня] = Hours * Record1![Оклад]

![Сума відпустки] = Record3![Відпустка]

![Сума за інтенсивність] = Record3![Доплата за інтенсивність] * Hours * Record1![Оклад]

![Сума за шкідливість] = Record3![Доплата за шкідливість] * Hours * Record1![Оклад]

![Сума нічних] = Record3![Нічні] * Hours * Record1![Оклад]

![Сума премії] = Record3![Премія] * Hours * Record1![Оклад]

'![Сума по хворобі] =

![Всього начислено] = WholePay

'Утримання

![Сума до пенсійного фонду] = PensTax

![Сума прибуткового податку] = PayTax

![Сума аліментів] = Record4![Аліменти] * WholePay

![Сума по виконавчим листам] = Record4![По виконавчим листам] * WholePay

![Сума до фонду безробіття] = Record4![Фонд безробіття] * WholePay

![Сума до фонду Чорнобиля] = Record4![Фонд Чорнобиля] * WholePay

![Сума профвзносу] = Record4![Профсоюзний взнос] * WholePay

![Всього утримано] = PayMin

![Сума до виплати] = WholePay - PayMin

.Update

End With

Hours = 0

WholePay = 1

PayMin = 1

PayTax = 1

PensTax = 1

i = i + 1

‘Перехід до наступних записів таблиць

Record1.Move 1

Record3.Move 1

Record4.Move 1

Loop

End Function

Контрольні питання до лабораторної роботи 6:

1. Що представляє собою об’єкт Модулі?

2. Яких трьох типів модулі використовують у Access?

3. З яких областей складається кожен модуль?

4. Що являє собою процедура?

5. Які бувають процедури?

6. Для чого служать аргументи?

7. Який оператор об’яви змінних?

8. Перелічіть основні оператори (умовні, циклу) VBA.

9. Чим відрізняється процедура підпрограми від процедури функції?

10. Що означає специфікатор Public?

11. Що означає специфікатор Private?

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |

При использовании материала ссылка на сайт Конспекта.Нет обязательна! (0.049 сек.)