
Лабораторная работа №6
Тема: Идентификация пользователя.
Задание: создать для курсового проекта форму для запроса имени пользователя и пароля. При запуске приложения должна появляться созданная форма, и, если имя пользователя или пароль введены неправильно, приложение должно оповестить пользователя об этом и ожидать повторного ввода.
Выполнение:
Создадим новую форму класса mainform, созданного в предыдущих лабораторных работах на основе класса form, разместим на поле формы элементы Label, TextBox, CommandButton, как показано на рис. 6.1.
Рис.6.1. Форма авторизации при входе в систему.
Для поля «Пароль» (Text2) установим свойство «PasswordChar» в значение «*». Этими символами будут заменяться символы вводимого пароля.
Для созданных кнопок «Вход» и «Выход» введем программный код, который обеспечит их требуемую функциональность, а именно переход в главное меню с занесением информации о текущем пользователе в журнал посещений и закрытие проекта, соответственно (см.Листинги 6.1 и 6.2). Добавим подсказку для пользователя в случае ввода неверного логина или пароля. Для этого запрограммируем на форме элемент «Label», расположенный над полями ввода, таким образом, чтобы оно информировало пользователя о неверной попытке ввода.
Листинг 6.1. Программный код для кнопки «Вход».
CLOSE TABLES ALL
id_ = 0
USE 'Data\access_table' IN 0
USE 'Data\log_table' IN 0
SELECT('access_table') && Выбираем таблицу для работы
num = RECCOUNT('access_table') && Считаем количество записей
FOR i = 1 TO num && Цикл поиска
GOTO i
IF ((access_table.Login+" "=ALLTRIM(thisform.text1.Value)+" ") AND (access_table.Password+" "=ALLTRIM(thisform.text2.Value)+" ")) THEN
id_ = access_table.user_id
EXIT
ENDIF
ENDFOR
SELECT('log_table') && Выбираем таблицу
IF id_ <> 0 THEN && Если найдено значение
INSERT INTO log_table (user_id, time_log) VALUES (id_, date())
thisForm.Release
DO FORM 'Forms\mainmenu.scx'
ELSE
thisForm.label14.Caption = 'Неверный логин или пароль! Попробуйте еще раз.'
ENDIF
CLOSE TABLES ALL
Листинг 6.2. Программный код для кнопки «Выход».
thisForm.Release
CLOSE ALL
Лабораторная работа №7
Тема: Создание запросов и отчетов с помощью «Wizards», исследование словаря базы данных.
Задание: создать запрос с помощью Мастера в виде таблицы и графика, создать отчет с помощью Мастера, проанализировать словарь своей базы данных.
Выполнение:
Создадим запрос с помощью Мастера в виде таблицы. На 1-м шаге в качестве источника запроса выберем таблицу sotrudniki. Шаг №2 Мастер пропускает, так как создаваемый запрос не является Cross-Tab Wizard. На 3-м шаге в качестве условия выборки назначим Мастеру выбрать информацию из таблицы о тех сотрудниках, у которых не заполнены поля «Почта» или «Дата рождения» (см.рис.7.1):
Рис.7.1. Создание запроса-таблицы с помощью Мастера.
Завершим создание запроса сохранением его в папку Query проекта. Результат выполнения данного запроса представлен на рис.7.2:
Рис.7.2. Результат выполнения запроса.
Создадим запрос с помощью Мастера в виде графика. В качестве источника запроса на 1-м шаге выберем таблицы sotrudniki и dolgnosty. На 2-м шаге в раздел Data Series поместим Dolg_id, в Axes – Sotr_id, учитывая, что возможно работать только с полями типа Numeric. На 3-м шаге зададим тип диаграммы – объемная столбчатая. Завершим создание запроса выбором его типа – Form - и сохранением его в папку Query проекта.
Рис.7.3. Результат выполнения запроса.
Чтобы полученные запросы можно было вызывать из формы, добавим на одну из ранее созданных форм две кнопки «Запрос 1» и «Запрос 2» (см.рис.7.4) и запрограммируем их следующим образом:
Листинг 7.1. Коды кнопок вызова запросов.
&&вызов запроса-таблицы
DO 'd:\militsina\query\SOTR_MAIL_BIRTH_BLANK.qpr'
&&вызов запроса-графика
DO FORM 'd:\militsina\forms\SOTRUDNIKI_PO_DOLGNOSTYAM'
Рис.7.4. Форма с кнопками вызова запросов.
Создадим с помощью Мастера отчет. На 1-м шаге в качестве источника выберем таблицу sotrudniki (все поля). На 2-м шаге определим способ группировки записей в отчете – по полю dolg_id. На 3-м шаге выберем тип оформления отчета – banded - и продолжим формирование стиля на 4-м шаге. На 5-м шаге зададим тип сортировки записей – по полю dolg_id и sort_id. Завершим создание отчета сохранением его в папку проекта Reports. Результат выглядит следующим образом (см.рис.7.5):
Рис.7.5. Отчет, созданный Мастером.
Исследуем контейнерный файл базы данных создаваемого курсового проекта. Для этого откроем из папки проекта файл course_data.dbc командой USE <путь к файлу>, затем – BROWSE, при этом все файлы проекта закрыты (см.рис.7.6). В результате анализа словаря базы данных можно заключить следующее:
А) Общее количество объектов базы данных – 147
Б) Каждый объект имеет имя и тип (база, таблица, индекс и др.)
В) Каждый объект имеет «родителя»: таблица – базу данных, к которой она принадлежит, поле или индекс – таблицу, в которой содержится; примечательно, что поле, являющееся в таблице первичным или вторичным ключом, отображается в словаре дважды – как обычное поле и как индекс.
Рис.7.6. Содержимое файла course_data.dbc.