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

2.5 Реалізація звітів

Форма для роботи зі звітами складається з двох частин, у перші знаходяться кнопки для безпосереднього формування звітів, а у другій список орендаторів та кнопка, яка автоматично формує договір з вибраним орендатором.

Для створення звітів і договору використовується SQL-запит.

Звіт має виводиться в документ Word у вигляді таблиці, автоматично обраховуючи потрібні величини. Для таблиці створюється заголовок. Документ створюється аналогічним чином як було описано вище (див. п. 2.3). Але деякі особливості.

Для створення заголовка таблиці використовується вирівнювання ліворуч та напівжирний тип шрифту:

DocWord.Paragraphs(1).Alignment = wdAlignParagraphRight

DocWord.Range(0, 20).Bold = True

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

rs.MoveFirst

Do While Not rs.EOF

k = k + 1

rs.MoveNext

Loop

Далі проводяться оголошення необхідні для створення таблиці:

Dim tbl As Table

Set Table = DocWord.Tables.Add(Range1, k, 3)

Set tbl = DocWord.Tables(1)

Для табиці потрібно задати заголовки стовпців, стиль та дозволити малювання рамки:

DocWord.Tables(1).Borders.Enable = True 'створює розмітку таблиці

DocWord.Tables(1).AutoFormat (wdTableFormatList1)

DocWord.Tables(1).Cell(1, 1).Range = "П.І.П"

DocWord.Tables(1).Cell(1, 2).Range = "Відділ"

DocWord.Tables(1).Cell(1, 3).Range = "Сума грн."

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

j = 1

For i = 2 To tbl.Rows.Count - 1

field = rs.Fields(0).Value

rs.MoveNext

tbl.Cell(i, j).Range.Text = field

Next i

rs.MoveFirst

Нижній рядок таблиці теж зайнятий для автосуми. Ширина стовпців встановлюється після малювання і заповнення таблиці. Таблиця перемальовується автоматично після встановлення ширини стовпців:

DocWord.Tables(1).Cell(i + 1, j).AutoSum

DocWord.Tables(1).Cell(i + 1, 1).Range = "ВСЬОГО ГРН."

DocWord.Tables(1).Columns(1).Width = 250

DocWord.Tables(1).Columns(2).Width = 100

DocWord.Tables(1).Columns(3).Width = 80

2.6 Створення автоматизованого документу

Існують два види створення автоматизованого документу: використання форм або закладок.

Форми використовуються для заповнення користувачами. До форм додаються елементи керування. Будь-який елемент керування вмістом, доданий до форми, можна зв’язати з даними.

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

Для створення автоматизованого документу був підготовлений документ і заповнений відповідно до вимог оформлення договорів, шаблон цього документу показане в додатку Б.

Серед елементів керування крім текстових полів використовуються елементи вибору дати. Тому не можна застосувати захист документу від зміни вмісту форм.

Список орендаторів в другій частині форми по роботі зі звітами заповняється з бази даних при активації форми. Натискання кнопки «Договір» призведе до запуску процедури обробки, в якій перш за все перевіриться чи був вибраний елемент зі списку. Якщо елемент списку не вибраний, то користувач отримає відповідне повідомлення.

Dim str$

str = ListBox1.Text

If ListBox1.Text = "" Then

MsgBox "Для формування звіту виберіть орендатора"

Else

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

Path = FileSystem.CurDir()

Set DocWord1 = WordApp1.Documents.Open(Path + "\Договір.docm")

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

DocWord1.FormFields("ТекстовеПоле11").Result = rs.Fields(1)

DocWord1.FormFields("ТекстовеПоле1").Result = rs.Fields(0)

DocWord1.FormFields("ТекстовеПоле5").Result = rs.Fields(2)

Документ не потребує захисту і доступний для редагування та збереження. Приклад готового для збереження чи друку документі показаний в додатку Б.

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