Лекція 20. Тема: "Перевірка клієнського трафіку роботи з базою даних".

Ознакою того, що певний користувач працює з базою даних є те,  що у каталозі, де знаходиться його клієнтський файл *.accdb існує файл блокування *.accde, але покрокова перевірка у режимі перегляду може зайняти суттєвий час.

Задача:          звести дані стосовно початку і закінчення роботи з БД для кожного її користувача у таблицю. Перший стовпчик таблиці має містити імена користувачі БД, другий стовпчик "Вхід" – час початку роботи з БД, третій стовпчик "Вихід" – час закінчення роботи з БД, четвертий стовпчик таблиці "Активність" – вказівка активності користувача на поточний стан. Ця таблиця має викликатися лише за одним натисканням кнопки.

Під час завантаження клієнтський файл буде записувати у таблицю час початку роботи, а під час виходу – час закінчення роботи.

Відкриваємо файл Таблиці_БД_КБ.accdb. Відкриваємо табличний файл натисканням Shift+Enter.

Крок 1: Створюємо таблиці контролю, у яких буде вказано дати і час заходження до БД і логічну вказівку входження.

Створюємо таблицю "А_в_системі" (Адміністратор в системі). Ця таблиця матиме поля: Код (тип Счетчик) – ключова поле, ВхідЧас (тип: Дата и время, полный формат даты), Вход (тип Логический, формат Да/Нет, Подстановка Флажок).  Зберігаємо таблицю  і введемо у поле ВхідЧас одне будь яке значення, щоб таблиця потім працювала. Тепер, в цьому ж файлі бази даних, створюємо аналогічні таблиці для кожного користувача. Це зручно створити шляхом копіювання і перейменування вже створеної таблиці. Тобто, у нас з'явилися таблиці "Д_в_системі", "П_в_системі", "Р_в_системі" і "Ш_в_системі" (Деталі, Планер, Руководітель, Шасі).

Крок 2: Створюємо таблиці контролю, у яких буде вказано дати і час виходу з БД і логічну вказівку виходу.

Створюємо таблицю "А_вийшов" (Адміністратор вийшов). Ця таблиця матиме поля: Код (тип Счетчик) – ключова поле, ВихідЧас (тип: Дата и время, полный формат даты), Вихід (тип Логический, формат Да/Нет, Подстановка Флажок).  Зберігаємо таблицю  і введемо у поле ВихідЧас одне будь яке значення, щоб таблиця потім працювала. Тепер, в цьому ж файлі бази даних, створюємо аналогічні таблиці для кожного користувача. Тобто, у нас з'явилися таблиці "Д_вийшов", "П_вийшов", "Р_вийшов" і "Ш_вийшов".

Крок 3: Створюємо таблиці, які будуть фіксувати час входу і виходу користувача.

Створюємо таблицю "А_журнал" (Журнал відвідань співробітників). Ця таблиця матиме поля: Код (тип Счетчик) – ключова поле, Зайшов (тип: Дата и время, полный формат даты), Вийшов (тип: Дата и время, полный формат даты).  Тобто, у нас з'явилися таблиці "Д_журнал", "П_журнал", "Р_журнал" і "Ш_журнал ".

Крок 4: Тепер Налаштуємо зв'язок клієнтських файлів з файлом, що містить щойно створені таблиці.

Меню "Файл" – "Таблиці БД КБ" – Сведения.  Закриваємо.

Заходимо у папку "Відладка" –відкриваємо файл "Адміністратор.accdb" (тобто, у режимі відладки) – вкладка "Внешние данные" – "Access" – перемикач "Создать связанную таблицу для святи с источником данных" – Обзор – Тваблиці_БД_КБ.accdb. У списку, що відкриється, слід обрати усі щойно створені таблиці і натиснути ОК. Тепер у клієнтському файлі "Адміністратор" з'явилися посилання на ці таблиці. Далі слід виконати аналогічні дії для усіх інших клієнтських файлів.

Крок 5: Створюємо запит стосовно входження користувача у систему. Для цього відкриваємо файл "Адміністратор" в режимі корегування і створюємо запит на додавання. Конструктор запитів – Додати під'єднану таблицю "А_в_системі" і у першому бланку запиту задаємо обчислення поточних дати та часу, для чого в рядку "Поле" запишемо Выражение 1: Now(). У другому бланку запишемо Выражение 2: -1 (-1 означає відсутність прапорця у логічному полі).   Для того, що б запит видавав лише один рядок,  натискаємо кнопку "Итоги" (піктограма – знак суми), після чого додається рядок "Групповая операция" у якому слід залишити значення "Группировка". Тепер цей запит перетворюємо на запит на додавання: обираємо "Тип запроса" – "Добавление" – Добавление записей в таблицу: "А_в_системі". Слід відмітити, що у розділеній БД цю таблицю слід обирати у поточній БД, так як шлях до неї вже вказаний під час під'єднання до неї. В рядку бланків запиту "Добавление"   вкажимо поля, куди будемо заносити інформацію – це поля ВходВремя  і Вход. Тепер зберігаємо запит під назвою "Вхід_А" (тобто, вхід адміністратора).  Якщо запустити цей запит на виконання, то можна побачити, що він додає у таблицю поточний час і дату, а також встановлює прапорець у логічному полі.

Крок 6: Створюємо запит стосовно   виходу користувача із системи. Конструктор запитів – Додати під'єднану таблицю "А_вийшов" і у першому бланку запиту задаємо обчислення поточних дати та часу, для чого в рядку "Поле" запишемо Выражение 1: Now(). У другому бланку запишемо Выражение 2: -1 . Тепер обираємо "Тип запроса" – "Добавление" – Добавление записей в таблицу: "А_вийшов".   В рядку бланків запиту "Добавление"   вкажимо поля, куди будемо заносити інформацію – це поля ВихідЧас  і Вихід. Тепер зберігаємо запит під ім'ям "Вихід_А" (тобто, вихід адміністратора із системи).

Тепер створюємо запити на додавання записів у журнал відвідування співробітників. Спочатку створимо запит на виборку, який вибирає дані з таблиць для запиту на додавання – це нам дасть можливість узнати останній час входу і виходу співробітника. Для цього створюємо запит на вибір інформації – у режимі конструктору додаємо приєднані таблиці "А_в_системі" і "А_вийшов" і зносимо до бланків запиту поля "ВхідЧас" і "ВихідЧас" – натискаємо кнопку "Итоги" і у рядку "Групповая операція" обираємо Max. Запускаємо запит на виконання і бачимо, що він формує поля Max-ВхідЧас і Max-ВихідЧас. Зберігаємо запит під ім'ям "А_вхід_вихід".

Тепер запишемо  отримані дані до журналу відвідування співробітників за допомогою запиту на додавання, тобто, якщо користувач вже увійшов до системи, то записується останній час входження, а якщо вийшов, то останній час виходу. Для цього створюємо запит на вибірку на основі раніше створеного запиту "А_Вхід_Вихід". До бланків запиту у конструкторі зносимо обидва поля: Max-ВхідЧас і Max-ВихідЧас. Тепер перетвоюємо тип запиту на додавання шляхом натискання піктограми "Добавление", указавши таблицю, куди додаються дані як "А_журнал". В бланках запиту з'явиться рядок "Добавление" у якому слід записати "Увійшов" – для поля Max-ВхідЧас і "Вийшов" – для поля    Max-ВихідЧас. Перевіряємо дію запиту і зберігаємо під іменем "А_запис_у_журнал".

Крок 7: Створимо запит знаходження користувача у системі за різницею значень входу і виходу користувача. Спочатку обчислимо останній максимальний код із журналу відвідування співробітників. Для цього починаємо створювати запит на вибір на основі таблиці "А_журнал". З таблиці у бланк зносимо поле "Код" – натискаємо кнопку "Итоги" – у рядку "Групповая операція" ставимо Max. Зберігаємо запит під ім'ям "А_в_системі_Макс". Тепер будемо знати про знаходження користувача у системі шляхом порівняння часу входження і часу  виходу.

Тепер створимо запит на основі запитів "А_журнал" і "А_в_системі_Макс". Зв'язок між ними створимо  між полями "Код" і "Мах-Код". Зносимо до бланків поля "Зайшов" і "Вийшов" з  "А_журнал", а також створимо обчислювальне поле                                                                       Выражение1: Iif([Вийшов]>[Зайшов];"Неактивний";"Активний")                                                                                        і збережемо запит під ім'ям "А_зараз_у_системі".

Після цього проводимо аналогічні дії для кожного користувача бази даних і отримуємо аналогічні запити "Д_зараз_у_системі", "П_зараз_у_системі", "Р_зараз_у_системі", "Ш_зараз_у_системі"

Тепер копіюємо запити "А_в_системі_Макс", "А_зараз_у_системі", "Д_в_системі_Макс", "Д_зараз_у_системі", "П_в_системі_Макс", "П_зараз_у_системі", "Р_в_системі_Макс", "Р_зараз_у_системі", "Ш_в_системі_Макс", "Ш_зараз_у_системі" у всі клієнтські файли бази даних.

 

 

 

 

 

 

Остання зміна: вівторок 3 січня 2023 09:54 AM