Смекни!
smekni.com

Создание базы данных (стр. 2 из 13)

В обработчик ошибок можно включить оператор Resume, который указывает на игнорирование любых ошибок. В этом случае никакая ошибка не будет обработана, что весьма чревато.

Resume имеет несколько форм:

Resume возобновляет выполнение программы с оператора, вызвавшего ошибку;

ResumeNext возобновляет выполнение программы со следующего оператора;

Resume <метка> возобновляет выполнение программы с оператора, следующего за указанной меткой.

2. конструкторская часть

2.1. Общие сведения

Программа DBXtension состоит из следующих частей:

Основного исполняемого файла DBX. exe

Вспомогательной программы assoc. exe

Набора wav-файлов в папке &bsol;Data

Файлы справки в папке &bsol;Help, ключевой файл - &bsol;Help&bsol;index. html

Из-за особенностей реализации VisualBasic также могут потребоваться библиотеки:

asyncfilt. dll

comcat. dll

ctl3d32. dll

msvbvm60. dll

oleaut32. dll

olepro32. dll

stdole. tlb

а также библиотеки используемых ActiveX-компонентов

При написании программы использовались следующие программы:

Средаразработки

Microsoft Visual Basic 6.0

Borland/Inprise Delphi 6.0

Графический инструметарий

XaraX 1.0

Xara3D 5.0

Microangelo 5.57

IrfanView3.91

ICAConverter1.1.0.8

Написание справки, пояснительной записки и структурной схемы

Microsoft Office Word Professional 2003

Help&Manual 3.3

MicrosoftOfficeVisioProfessional 2003

Дополнительно использовалась программа UGH! 0.942

2.2. Функциональное назначение

Данная программа представляет собой удобное средство для работы с однотабличной ненормализованной базой данных. Максимально удобный и функциональный интерфейс облегчает работу с базой данных. Запросная система, позволяющая добавлять, удалять, сортировать, выводить, обменивать и преобразовывать данные, построена на основе нескольких универсальных запросов, охватывающих весь круг решаемых задач:

Добавление полей и записей

Удаление полей и записей

Сортировка записей по любому полю по и против алфавита

Вывод записей по любому полю, подходящий по параметрам:

Равенства выражению

Больше выражения

Меньше выражение

Встречается в таблице Nраз

Встречается в таблице более N раз

Встречается в таблице менее N раз

Обмен полей и записей

Переименование и смена типа полей (произвольные строки и целые числа)

Запросы формируют копии базы данных, которые можно сохранять в качестве новых баз данных.

По любым числовым данным можно строить диаграммы следующих видов:

Столбчатая

Линейная

Точечная

Круговая

Столбчатые, линейные, точечные и круговые диаграммы можно строить в плоскости и в аксонометрической проекции (3D, только для столбчатой и круговой).

Результаты работы с базой данных можно сохранить в HTML.

В случае необходимости защиты данных предусмотрена возможность защиты по паролю и шифрования данных в базе данных.

В данной реализации программы база данных может содержать поля трех типов данных:

строки длиной до ~248 символов

целые числа в диапазоне - 2147483647. .2147483647

псевдоформат Дата, являющийся строковым, но редактируемый с использованием календарем

2.3. Описание логической структуры программы

2.3.1. Главная форма (MainForm. frm) (рис.1)

Запуск программы.

Запускается форма MainForm(строка 1), в процедуре Form_Load(строка 245) устанавливаются начальные значения и состояние панели инструментов.

Создание новой БД.

Вначале управление получает процедура CreateDB_Click(строка 96), в которой вызывается стандартный системный диалог выбора файла. Если файл выбран, то вызывается процедура NewDB(строка 2788), создающая новую БД, и процедурой ShowTable(строка 2378) отображается пустая таблица.


Открытие БД.

В процедуре OpenDB_Click(строка 292) вызывается диалог выбора файла. Если файл был выбран вызывается функция LoadDB(строка 2600), загружающая БД из файла. В случае отсутствия ошибок в файле и нужных прав для открытия файла кнопки на панели инструментов меняют состояние при помощи процедуры DisEnImage(строка 37) и отображается загруженная таблица процедурой ShowTable(строка 2378). Если прав недостаточно для открытия БД будет вызван мастер защиты (рис.5, Рис.6).

Сохранение БД.

В процедуре SaveDB_Click(строка 345) вызывается диалог выбора файла. Если файл был выбран, то изменяется путь к текущей БД в переменной DBPath(строка 2309) и БД сохраняется в указанный файл процедурой FlushDB(строка 2500).

Закрытие БД.

Если переменная DBChanged(строка 2311), являющаяся флагом несохраненных изменений в БД, равна истине, то предлагается отменить закрытие. Если пользователь все же закрывает БД, то процедура ClearAll(строка 2806) освобождает используемую под таблицы память, а процедура ShowTable(строка 2378) скрывает пустую таблицу.

Создание резервной копии.

В процедуре ResCopyDB_Click(строка 328) сначала вызывается диалог выбора файла. Если он удачен, то проверяется совпадение текущей БД с ее создаваемой копией. Если файлы различны API функция CopyFile(строка 2824) создает копию файла текущей БД и появляется сообщение об удачном выполнении операции.

Выход (завершение работы).

Выход из программы реализован процедурой ExitPr_Click(строка 124). В ней происходит проверка на внесенные в БД изменения, которые еще не были сохранены. Если изменений нет, или пользователь выбрал выход без сохранения, программа завершает свою работу.

Запуск Мастера запросов (QueryMasterForm. frm) (рис.2)

При выборе Запросы→Мастер запросов выполняется процедура QueryM_Click. (строка 319) В ней модально показывается форма QueryMasterForm(рис.2). Управление передается этой форме, ее процедуре Form_Load(строка 785). В ней настраивается внешний вид формы. При выборе элемента в списке QueryTypeCombo вызывается процедура QueryTypeCombo_Click(строка 801), заполняющая список QuerySubtypeCombo значениями в зависимости от поля QueryTypeCombo. ListIndex. При нажатии на изображении «+» в правой части окна вызывается процедура AddImage_Click(строка 667). В ней в зависимости от полей QueryTypeCombo. ListIndex и QuerySubtypeCombo. ListIndex вызываются вложенные процедура AddStr(строка 659) и функция Generate_XXX(строки 2982, 2996, 3031, 3043, 3068, 3089). AddStr определена в модуле формы и выполняет проверку в добавление строки в список QueryList. Generate_XXX, являющаяся серией функций, начинающихся Generate_, и определенных в модуле QueryRunner, формируют тексты запросов на основе диалогов. Нажатие изображения «-» вызывает процедуру DelImage_Click(строка 774), удаляющую выбранный в списке QueryList элемент. Если нажать на изображение «X», то будет вызвана процедура ClearImage_Click(строка 762), удаляющая все элементы в списке QueryList. При щелчке по кнопке CancelBut управление переходит к процедуре обработки этого события. Эта процедура выгружает форму QueryMasterForm из памяти. Ну и нажатие на кнопку «Выполнить» приводит к выполнению процедуры RunBut_Click(строка 832), которая вызывает процедуру RunQuery(модуль QueryRunner) для каждого элемента списка QueryList, а также показывает выбранную таблицу вызовом ShowTable(QMFDBIndex). После этого список QueryList очищается и выдается сообщение о завершении выполнения запросов.

Формирование HTML.

При выборе пункта меню Результаты→Формирование HTML вызывается процедура HTMLCreator_Click(строка 208). В ней вызывается диалог выбора файла. Если файл выбран, то процедура CreateHTML сохраняет текущую БД в файл, иначе выдается сообщение об отмене формирования HTML.

Защита (PasswordForm. frm) (рис.9).

При выборе Настройки→Защита вызывается процедура Security_Click(строка 356). В ней показывается форма PasswordForm в режиме настройки параметров безопосности. Если после завершения работы с формой значение переменной PasswordForm. res истинно, то новые параметры сохраняются и выбается соответствующее сообщение. После этого форма PasswordForm выгружается из памяти.

Также данная форма используется при открытии БД, защищенной паролем.

О программе (AboutForm. frm) (рис.10).

При выботе пункта О программе в меню? вызывается процедура AboutProg_Click(строка 11). В ней модально отображается форма AboutForm.

Помощь.

После выбора? →Помощь управление переходит к процедуре HelpProg_Click(строка 140), запускающей с помощью API функции ShellExecute(строка 2827) браузер с файлом программной справки. Форму можно перетаскивать мышью за любое место. Для этого используются процедуры MDown(строка 2874), MUp(строка 2880), MMove(строка 2862). В процедуре MMove вызываются API функции GetWindowRect(строка 2846) и MoveWindow(строка 2847). При щелчке по надписи «Xerx» вызывается API функция ShellExecute(строка 2827), вызывающая программу, зарегистрированную в системе как почтовая.

2.3.2. Мастер диаграмм (DiagMasterForm. frm) (рис.11)

При выборе Результаты→Мастер диаграмм выполняется процедура DiagDraw_Click(строка 114). В ней модально показывается форма DiagMasterForm. Управление передается этой форме, ее процедуре Form_Load(строка 1196). В ней настраивается внешний вид формы, очищаются все списки и в список TableIndexCombo добавляются названия всех открытых таблиц.

При выборе элемента в TableIndexCombo в процедуре TableIndexCombo_Click(строка 1306) список TableColList заполняется заголовками полей выбранной таблицы. При двойном щелчке в TableColList вызывается процедура TableColList_DblClick(строка 1291), в которой выбранный заголовок вместе с названием таблицы добавляется в список SelectColList с предварительной проверкой на уже добавленность. Двойной щелчок в списке SelectColList вызывает процедуру SelectColList_DblClick(строка 1301), в которой выбранная строчка удаляется.

Выбор элемента списка DiagTypeCombo приводит к вызову процедуры DiagTypeCombo_Click(строка 1184), в которой изменяется картинка типа диаграмм в компоненте DiagTypeImage, а также скрывается либо показывается фрейм Frame2.

Нажатие на кнопку Отмена закроет форму DiagMasterForm.

Нажатие на кнопку Принять приводит к вызову процедуры OkBut_Click(строка 1275), в которой вызывается функция GettingDiagData(строка 1229), формирующая данные для диаграммы. В случае успешности этой загрузки загружается в память форма DiagResForm(рис.16) и вызывается ее процедура InitDiagData(строка 1424), после чего загруженная форма модально показывается.