- •1 Проектування бази диних
- •1.1 Аналіз предметної області
- •1.2 Розробка er-моделі
- •1.3 Нормалізація
- •1.4 Реалізація бази даних в субд
- •2 Програмна реалізація субд
- •2.1 Реалізація інтерфейсу
- •2.2 Реалізація sql-запитів
- •2.3 Реалізація роботи з таблицями.
- •2.4 Реалізація обробки запитів
- •2.5 Реалізація звітів
- •2.6 Створення автоматизованого документу
- •2.7 Захист бази даних та забезпечення цілісності
- •3 Аналіз результатів і розробка інструкцій по роботі
- •3.1 Інструкція з технічного обслуговування
- •3.2 Інструкції системного програміста
- •3.3 Інструкція програміста
- •3.4 Інструкції оператору
- •Висновки
- •Список використаних джерел
- •Додаток а Лістинг програми
- •Додаток б Приклади автоматизованого документу
- •1. Предмет домовленості
- •5. Термін дії договору
- •1. Предмет домовленості
- •5. Термін дії договору
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 шляхом конкатенації.