Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова.docx
Скачиваний:
9
Добавлен:
28.10.2018
Размер:
401.94 Кб
Скачать

2.3 Реалізація роботи з таблицями.

При активізації форми UserForm2 відбувається ініціалізація комбінованих списків:

Private Sub UserForm_Activate()

ComboBox1.AddItem ("Базар")

ComboBox1.AddItem ("Охорона")

ComboBox1.AddItem ("Офіс")

Також описується технологія доступу до бази даних ADO:

Dim cn As ADODB.Connection

Set cn = New ADODB.Connection

cn.Provider = "Microsoft.Jet.OLEDB.4.0"

cn.ConnectionString = "D:\Central.mdb"

cn.Open

Далі встановлюються локальні буфери для збереження таблиць. Такі буфери використовуються багато разів. Наприклад, один з них описується так:

Dim rs As New ADODB.Recordset

rs.CursorType = adOpenKeyset

rs.LockType = adLockOptimistic

rs.Source = "SELECT * FROM Працівник"

Set rs.ActiveConnection = cn

Після встановлення буферу та його заповнення, заповнюються текстові поля та комбіновані списки та інші потрібні графічні елементи форми. Для цього розроблена окрема процедура ShowRecord() :

Private Sub ShowRecord()

TextBox1.Text = rs.Fields(0).Value

ComboBox3.Text = rs.Fields(5).Value

CheckBox1.Value = rs.Fields(6).Value

End Sub

Для перегляду наступного, попереднього були створені кнопки, що обробляються схожим чином. Наприклад, текст процедури обробки кнопки наступного запису виглядає так:

If Not rs.EOF Then

rs.MoveNext

If Not rs.EOF Then

ShowRecord

Else

rs.MoveLast

End If

End If

Для виключення помилок при відсутності слідуючого чи попереднього запису виконується перевірка на предмет останнього чи першого запису відповідно.

Для організації додавання запису використовується допоміжні процедури ShowEmptyRecord() (обнулює поля форми) та FillRecord() (записує введенні дані в локальний буфер).

Видалення запису проходить наступним чином:

If rs.RecordCount >= 1 Then

rs.Delete

If rs.RecordCount > 0 Then

CommandButton8_Click

Else : ShowEmptyRecord

Де CommandButton8_Click імітує натиснення кнопки оновлення. Таким чином використовується процедура обробки кнопки оновлення без явного її використання.

Закриття форми призводить до виконання команд пов’язаних з обнуленням локального буферу та закриттям зв’язків з базою даних:

rs.Close

Set rs = Nothing

cn.Close

Set cn = Nothing.

Більш детально текст програми можна побачити в додатку.

2.4 Реалізація обробки запитів

Робота з базою даних у формі для запитів проходить аналогічним чином як було розглянуто вище (див. п. 2.2). Тому розглянемо тільки особливості обробки запитів отриманих використанням мови SQL.

У даному вікні організовано роботу трьох видів запитів: по відділу, орендатору і працівникові. Назви відділів сталі, тому вони прописані при ініціалізації явно і не залежать від бази даних. Комбіновані списки орендаторів і працівників заповнюються при активації форми з бази даних за допомогою SQL-запитів. Приклад заповнення такого списку:

Do While Not rs2.EOF

ComboBox2.AddItem (rs2.Fields(0))

rs2.MoveNext

Loop

Для отримання будь-якого виду звіту досить тільки вибрати необхідну критерію в комбінованому списку на будь-якій вкладці. Обробка таких списків виконується при зміні вибору. Це виключає необхідність використовувати додаткові кнопки для формування запиту.

Як додатково, можна використати можливість виведення звіту запиту у документ Word:

Set WordApp = New Word.Application

WordApp.Visible = True

Set DocWord = WordApp.Documents.Add

DocWord.Activate

DocWord.Paragraphs(1).Alignment = wdAlignParagraphLeft

DocWord.Range(0,0).InsertAfter str1

Для цього спочатку створюється екземпляр додатку, далі відкривається в ньому новий документ. Після чого встановлюється властивість параграфу( в даному випадку вирівнювання) та виводиться текст у вказаний діапазон. Весь зміст звіту записаний в рядковій змінній str1 шляхом конкатенації.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]