|
|||||
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?
|
При использовании материала ссылка на сайт Конспекта.Нет обязательна! (0.049 сек.) |