Создание базы данных
Программа для работы с однотабличной ненормализованной базой данных. Цель программы: обеспечение инструментарием для работы с базой данных различных школьных соревнований. Работа с базой данных на физическом и логическом уровнях. Элементы языка.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.03.2009 |
Размер файла | 114,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
164
МОСКОВСКИЙ ОРДЕНА ЛЕНИНА, ОРДЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ
И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Н.Э. БАУМАНА
Калужский филиал
Факультет ?Фундаментальных Наук?
Кафедра ?Программного Обеспечения ЭВМ, Информационных Технологий и Прикладной Математики?
РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ
ПО ОСНОВАМ ИНФОРМАТИКИ
Тема:
“Создание базы данных”
содержание
- Аннотация 4
- 1. исследовательская часть 5
- 1.1. Постановка задачи 5
- 1.2. Общие сведения 6
- 1.3. Элементы языка 7
- 1.4. Средства обмена данными 9
- 1.5. Встроенные элементы 10
- 1.6. Средства отладки программ 10
- 2. конструкторская часть 12
- 2.1. Общие сведения 12
- 2.2. Функциональное назначение 13
- 2.3. Описание логической структуры программы 14
- 2.3.1. Главная форма (MainForm. frm) (рис.1) 14
- 2.3.2. Мастер диаграмм (DiagMasterForm. frm) (рис.11) 17
- 2.3.3. Работа с окном диаграммы (DiagResForm. frm) (рис.16) 18
- 2.3.4. Работа с окном настроек диаграммы (DiagOpt. frm) (рис.15) 19
- 2.3.5. Работа с редактором записей (EditRecordForm. frm) (рис.3) 20
- 2.3.6. Работа с окном выбора (SelectForm. frm) (Рис.6) 21
- 2.3.7. Работа с редактором текста (TextEditForm. frm) (рис.8) 21
- 2.3.8. Работа с календарем (MonthForm. frm) (рис. 19) 22
- 2.3.9. Работа DBConst (DBConst. bas) 22
- 2.3.10. Работа DBTypes (DBTypes. bas) 22
- 2.3.11. Работа QueryRunner (QueryRunner. bas) 23
- 2.4. Запуск и выполнение 24
- 3. технологическая часть 26
- 3.1. Руководство системного программиста 26
- 3.1.1. Общие сведения о программе 26
- 3.1.2. Структура программы 27
- 3.1.3. Проверка программы 28
- 3.2. Руководство оператора 29
- 3.2.1. Общие сведения о программе 29
- 3.2.2. Выполнение программы 29
- 3.2.3. Сообщения оператору (рис.12, рис.13, рис.14) 31
- литература 34
- Приложение 1 35
- Приложение 2 165
Аннотация
Данный курсовой проект представляет собой программу, предназначенную для работы с однотабличной ненормализованной базой данных. Основной целью программы является обеспечение инструментарием для работы с базой данных различных школьных соревнований. Предоставляемый инструментарий позволяет работать с БД на физическом и логическом уровнях. Физический уровень, меняющий структуру БД, позволяет работать с отдельными БД, создавать, удалять и обменивать поля и записи, а также менять типы полей БД. На логическом уровне можно менять значения полей (заголовки) и записей, производить выборки, сортировки, строить различные диаграммы, сохранять БД в гипертекстовом формате. Для облегчения работы с программой написана подробнейшая справка в HTML.
1. исследовательская часть
1.1. Постановка задачи
Используя средства языка программирования создать файл, элементами которого являются записи, определенные таблицей вашего варианта.
Создать файл из 10 - 15 записей. Предусмотреть возможность редактирования файловой информации (добавление, удаление, замену всей записи и одного из полей записи).
Создать запросы, согласно вашему варианту.
Разработать интерфейс пользователя для реализации выше перечисленных функций.
Создать файл справочной службы и подключить его к интерфейсу.
Подготовить расчетно-пояснительную записку (см. методические указания).
Основные алгоритмы работы программы вынести на лист А1.
Создать заставку-презентацию данного программного продукта с использованием графических средств VB.
Карточка участника соревнования.
Фамилия Имя Отчество |
Год рождения |
Дата Соревнования |
Вид состязания |
Показатели в состязании |
Школа |
Район |
Добавляемый столбец.
Запросы:
сколько участников соревнований состязалось в прыжках в длину; какой показатель является лучшим в этом виде состязаний?
получить список учащихся школы № 20, принявших участие в соревнованиях;
сколько участников Ленинского района приняли участие в соревнованиях?
каков наилучший показатель в прыжках в высоту, кто установил рекорд?
получить список участников соревнований, принявших участие более, чем в трех видах состязаний.
Добавляемый столбец «Фамилия, Имя, Отчество тренера».
Дополнительные запросы:
какое количество участников состязаний подготовил тренер Сидоров И. И.;
получить фамилию, Имя, Отчество тренера, подготовившего участника с лучшими показателями в толкании ядра.
1.2. Общие сведения
Visual Basic является прямым потомком языка Basic, создававшегося как очень простой язык для обучения основам программирования. С тех пор язык значительно расширился, а с появлением Visual Basic стал поддерживать концепцию ООП. Однако он всё-таки ещё слишком прост, и не приспособлен к написанию широкого круга программ. С другой стороны, он вполне подходит для своей основной цели - написанию офисных приложений. Благодаря простоте и склонности к офисным приложениям диалект Visual Basic VBA (Visual Basic for Application) сделан внутренним языком для приложений Microsoft Office, а также в сторонних программах, имеющих лицензию на использование языка. Также существует скриптовый вариант языка VBScript, который используется в технологии HTML, а именно в DHTML, т.е. для динамической работы с содержимым гипертекстовых документов, наравне с JavaScript, JScript. Однако даже сейчас VBScript поддерживается далеко не всеми современными и наиболее распространёнными браузерами, в отличие от JavaScript, что сокращает область его использования.
Сердцем любой программы на Visual Basic является исполняемый файл и ряд динамических библиотек (DLL - Dynamic Link Library, библиотека динамического связывания). Кроме того, Visual Basic обладает интегрированной возможностью использования внешних компонентов, встраиваемых в программу и облегчающих работу программиста (технология ActiveX). Благодаря тому, что компоненты ActiveX являются независимыми от исходного языка, то в программах Visual Basic можно использовать сторонние компоненты, которые могут помочь в осуществлении поставленной цели.
1.3. Элементы языка
В данной курсовой работе использовались различные типы данных:
byte
integer
long
boolean
string (в формате UNICODE)
variant
пользовательские типы
массивы элементов данных типов
Объявление переменных:
(Dim | Private | Public | Static) <имя переменной> As <тип переменной>
Описание констант:
Const <идентификатор> As <тип>
Использовались записи:
Type <название>
<поля_записи>
End Type
А также использовались основные операторы:
Альтернативные операторы условия
If <условие> Then
<оператор 1>
[ElseIf <условие> Then
<оператор 2>…]
[Else <оператор 3>]
End If
Операторы выбора
Select Case <условие>
[Case <метка 1>
<оператор 1>]
………
[Case Else
<оператор 2>]
End Select
Циклы
с предусловием
Do (While | Until) <условие>
<оператор 1>
Loop
While <условие>
<оператор 1>
Wend
со счётчиком
For <счётчик>=<начальное значение> To <конечное значение> [шаг]
<оператор 1>
[Exit For <оператор 2>]
Next <счётчик>
с постусловием
Loop
<оператор 1>
Do (While | Until) <условие>
Процедуры
[Dim | Private | Public | Static] Sub <имя процедуры> ([список параметров])
<тело процедуры>
End Sub
Функции
[Dim | Private | Public | Static] Function <имя функции> ([список параметров]) [As <тип возвращаемого значения>]
<тело процедуры>
End Function
Массивы
Статический
Dim <иденитифекатор>([нижняя граница to] верхняя граница) As <тип>
Динамический
Dim <идентификатор> As <тип> - описание массива
1.4. Средства обмена данными
Внутренний обмен данными осуществляется с помощью переменных.
Переменные могут передаваться в процедуры и функции тремя способами:
По ссылке. Передаётся адрес переменной, что позволяет изменять ее значение. Используется By Ref, режим по умолчанию.
По значению. Создается локальная копия переменной равная передаваемой. Значение изменить нельзя. Используется By Val.
Переменная может быть описана как глобальная и расположена вне процедур и функций. Таким образом она будет глобально доступна.
1.5. Встроенные элементы
Check boxФлажок для выбора из двух вариантов
Combo boxПоле ввода со списком
FrameГруппирование элементов управления
ImageДобавление на форму изображений
LabelОтображение надписей
LineИзображение линий для легкого зрительного разделения частей интерфейса
List boxОтображение списка элементов
Option buttonГруппы переключателей
Text boxПоле ввода текста
TimerТаймер
Не встроенные, но используемые:
Common DialogСтандартные системные диалоги(comdlg32. ocx)
List ViewРасширенный список элементов(mscomctl. ocx)
Rich Text BoxРедактор текстовых полей (richtx32. ocx)
Status BarСтрока состояния для отображения глобальных параметров (путь к БД, необходимость сохранения и т.д.) (mscomctl. ocx)
MonthViewКалендарь (comct332. ocx)
1.6. Средства отладки программ
При написании программ возникают ситуации, когда, например, необходимо выполнить участок программы по действиям, либо найти место и причину возникающей ошибки. Для этих целей в Visual Basic реализован механизм отладки, позволяющий выполнять программу по шагам и наблюдать за значениями переменных. Используя точки останова, окно наблюдения значений переменных можно изучать выполнение программы: выполнение операций, ветвлений, вызовов процедур и функций и т.д.
Также Visual Basic предоставляет возможность встроенной в код обработки исключений (ошибок, связанных с неправомерными действиями программы, происходящими из-за ошибок в коде, либо состояния среды выполнения - операционной системы). Для этого в языке реализованы конструкции:
On Error GoTo <метка>.
Если во время выполнения программы возникнет исключение в одном из операторов, расположенных после данной конструкции, то управление передается обработчику ошибок, указанному меткой.Т. е. выполнение программы продолжится с места, следующего за меткой. Если в некоторый момент обработку ошибок следует отключить, то используется конструкция On Error GoTo 0.
В обработчик ошибок можно включить оператор Resume, который указывает на игнорирование любых ошибок. В этом случае никакая ошибка не будет обработана, что весьма чревато.
Resume имеет несколько форм:
Resume возобновляет выполнение программы с оператора, вызвавшего ошибку;
Resume Next возобновляет выполнение программы со следующего оператора;
Resume <метка> возобновляет выполнение программы с оператора, следующего за указанной меткой.
2. конструкторская часть
2.1. Общие сведения
Программа DB Xtension состоит из следующих частей:
Основного исполняемого файла DBX. exe
Вспомогательной программы assoc. exe
Набора wav-файлов в папке \Data
Файлы справки в папке \Help, ключевой файл - \Help\index. html
Из-за особенностей реализации Visual Basic также могут потребоваться библиотеки:
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
IrfanView 3.91
ICA Converter 1.1.0.8
Написание справки, пояснительной записки и структурной схемы
Microsoft Office Word Professional 2003
Help&Manual 3.3
Microsoft Office Visio Professional 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), после чего загруженная форма модально показывается.
2.3.3. Работа с окном диаграммы (DiagResForm. frm) (рис.16)
Форма DiagResForm, вызываемая из формы DiagMasterForm(рис.11) кнопкой «Принять», предназначена непосредственно для построения диаграмм. Диаграммы строятся на канве компонента Chart типа PictureBox, используя его методы. Кнопка Image1 с изображение дискеты позволяет сохранить диаграмму в качестве BMP файла. Для этого предназначена процедура Image1_Click(строка 2046), в которой, используя компонент CD типа CommonDialog, указывается путь к создаваемому растровому файлу, после чего (если файл был указан) вызывается встроенная процедура SavePicture, сохраняющая диаграмму. Нажатие на изображение Image2 с изображением вопроса показывает модально окно настроек DiagOptForm(рис.15). Кнопка Image3 с изображение стрелки выгружает форму из памяти. Процедура DrawDiagram(строка 1975), вызываемая при изменении размеров и изменении настроек, непосредственно не строит диаграммы, она лишь заливает фон градиентной заливкой (процедура ColorFill(строка 1440)), а также в зависимости от типа строимой диаграммы вызывает процедуры DrawCircle(строка 1673) (круговая диаграмма) и DrawPoint(строка 1749) (колончатая, точечная и линейчатая диаграммы). Также DrawCircle вызывает процедуру OutOneElem(строка 1482), стоящую один элемент круговой диаграммы. Данные для построения хранятся в массиве DiagData(строка 1387), режим построения (тип диаграммы) в переменной DrawingMode(строка 1388), а флаг использования 3D в переменной Use3D(строка 1388). Значения этих переменных определяются в процедуре InitDiagData(строка 1424). При перемещении мыши над диаграммой Chart вызывается процедура Chart_MouseMove(строка 1988), выводящая в метку Label2 текст о значении функции в указанной точке. Перемещение ползунка полосы прокрутки VScroll вызывает процедуру VScroll_Change(строка 2122), изменяющую значение переменной Ellipce в зависимости от позиции ползунка и перерисовывающую диаграмму.
2.3.4. Работа с окном настроек диаграммы (DiagOpt. frm) (рис.15)
На закладке «Цвета и текст» щелчок по любому компоненту Frame2 вызывает диалог выбора цвета (используется ColorDlg). Изменение цвета фреймов с индексами 0 или 1 вызывает процедуру ColorFill(строка 1440) для компонента Picture1 типа PictureBox. В списке List1 хранятся надписи элементов диаграммы, а в массиве List1. ItemData хранятся цвета соответствующих элементов. В текстовом поле Text1 можно менять значение выбранной в List1 записи. При нажатии кнопки [Enter] вызывается процедура Text1_KeyDown(строка 2203), сохраняющая значение подписи в массив List1. Item. При нажатии кнопки Принять переменной res присваивается значение 1, что сигнализирует об необходимости применить внесенные изменения. После этого форма скрывается. При нажатии на кнопку Отмена форма делается невидимой без изменения переменной res.
2.3.5. Работа с редактором записей (EditRecordForm. frm) (рис.3)
Двойной щелчок по строке в списке ListView вызывает процедуру ListView_DblClick(строка 220), в которой настраивается внешний вид формы EditRecordForm, вызывается процедура LoadData(строка 855), определенная в модуле формы, и форма модально отображается. При загрузке формы вызываются процедура Form_Load(строка 891), настраивающая внешний вид формы. В списке CellList_Click выводятся поля выбранной в списке ListView записи. Выбор элемента в списке сопровождается вызовом процедуры CellList_Click(строка 866), в которой в зависимости от типа выбранного поля в метку Label6 выводится соответствующий текст, а также процедурой ButEnabled(строка 2934), определенной в модуле DBConst, меняется состояние кнопки «Редактор». После этого в текстовое поле Text1 загружается значение выбранного поля и полностью выделяется. Нажатие кнопки «Редактор» вызывает процедуру EditorBut_Click(строка 917), в которой сначала проверяется тип редактируемого поля, затем, если оно числовое, выдается сообщение об ошибке, иначе поле сравнивается с форматом даты. Если формат совпадает и флажок MonthForm. Check1(рис. 19) (установлен - календарь не показывается) не установлен, то загружается форма TextEditForm(рис.8) (в ином случае загружается форма MonthForm), в текстовый редактор TextEdit типа RichTextBox загружается значение из текстового поля Text1. Если окно TextEditForm было закрыто с сохранением текста, то переменная TextEditForm. res истинна и измененный текст загружается в текстовое поле Text1. После этого форма TextEditForm выгружается из памяти. Нажатие на кнопку «Применить» вызывает процедуру FlipBut_Click(строка 1010), проверяющую введенное значение на корректность (соответствие типу и разрядной сетке) и, в случае отсутствия ошибок, присваивает выбранному в списке CellList элементу введенное значение. В случае какой-либо ошибки выдается соответствующее сообщение. Нажатие на кнопку «Вернуть» восстанавливает все поля записи из БД в процедуре ReturnBut_Click(строка 908), вызывающей последовательно LoadData(строка 855) и OverloadList(строка 883), получающие и копирующие запись во временный буфер Arr(строка 853). Нажатие на кнопку «Отмена» вызывает процедуру CancelBut_Click(строка 982), выгружающая форму EditRecordForm из памяти. Кнопка «Принять» вызывает процедуру SelectBut_Click(строка 954), работа которой заключается в сохранении полей записи из локального массива Arr в глобальную таблицу.
2.3.6. Работа с окном выбора (SelectForm. frm) (Рис.6)
Выбор записей и полей БД производится при помощи формы SelectForm, предоставляющей удобный выбор среды указанных списков. В модуле формы глобально объявлены функции SelectDlg(строка 556) и MultiSelectDlg(строка 598), предназначенные для организации диалога по выбору одного (SD) или нескольких (MSD) записей (SD) либо полей (SD, MSD) из указанной при вызове таблицы. Функция SelectDlg возвращает число равное номеру выбранного элемента, либо «-1», если выбор был отменен. Функция MultiSelectDlg возвращает строку, в которой через запятую перечислены индексы всех выбранных элементов. Если строка пуста, то это однозначно указывает, что ничего не было выбрано.
2.3.7. Работа с редактором текста (TextEditForm. frm) (рис.8)
Нажатие кнопки «Редактор» вызывает форму «Редактор текстовых полей» (TextEditForm), главной частью которой является компонент TextEdit типа RichTextBox. На панель Toolbar1, расположен ряд кнопок, обработка нажатий которых расположена в процедуре Toolbar1_ButtonClick(строка 522). Кнопка «ClearText» очищает весь текст в TextEdit, а кнопка «SaveText» указывает вызывающей форме о необходимости внести изменения в данные. Кнопки «CopyText», «PasteText», «CutText» и «DeleteText» работают с системным буфером обмена. Кнопка «Properties» позволяет, используя компонент FontDlg, настраивать шрифт в редакторе.
2.3.8. Работа с календарем (MonthForm. frm) (рис. 19)
При загрузке формы в процедуре Form_Load настраивается внешний вид окна а также переменной res(строка 2231), хранящей результат работы с окном, присваивается значение 0. При нажатии кнопки Принять вызывается процедура YesBut_Click(строка 2249), устанавливающая значение res в 1 (дата выбрана) и скрывает форму. При нажатии кнопки Текст вызывается процедура EditBut_Click(строка 2237), устанавливающая значение res в - 1 (редактирование как текст) и также скрывает форму. Нажатие кнопки Отмена просто скрывает форму в процедуре CancelBut_Click(строка 2233).
2.3.9. Работа DBConst (DBConst. bas)
В модуле описаны глобальные константы, процедуры:
SoundClick(строка 2914), для проигрывания звука нажатия на кнопку
IsInteger(строка 2918), для проверки возможности преобразования строки в целое число
ButEnabled(строка 2934), для анимации кнопок
2.3.10. Работа DBTypes (DBTypes. bas)
Модуль предназначен для обеспечения всей работы с БД как с физическим файлом. Для этого в модуле объявлены необходимые типы, переменные и константы. Также модуль содержит следующие процедуры и функции:
DelCol_(строка 2318), процедура для удаления поля из указанной таблицы
DelRow_(строка 2348), процедура для удаления записи из указанной таблицы
TestDBChanged(строка 2369), процедура проверки изменения БД и отображения дискеты в первом секторе строки состояния главной формы
ShowTable(строка 2378), процедура вывода указанной БД на экран
ItColAlreadyCreate(строка 2419), функция проверки уникальности поля
AddCol(строка 2432), процедура добавление поля
AddField(строка 2465), процедура добавления записи
DelTable(строка 2475), процедура удаления указанной таблицы из массива таблиц DB
CodeDecode(строка 2483), функция шифрует строки
FlushDB(строка 2500), процедура сохранения БД
LoadDB(строка 2600), функция загрузки БД
NewDB(строка 2788), процедура создания новой БД и инициализации настроек
ClearAll(строка 2806), процедура освобождения занимаемой памяти и сброса настроек
ClearHeader(строка 2814), процедура установки полей заголовка БД в стандартное (начальное) состояние
2.3.11. Работа QueryRunner (QueryRunner. bas)
Модуль предназначен для работы с запросами. Для формирования и выполнения запросов в модуле описаны необходимые константы и процедуры с функциями:
Формирование строки запросов на основе диалогов:
Generate_Add(строка 2982) - добавление полей и записей
Generate_Del(строка 2996) - удаление полей и записей
Generate_Sort(строка 3031) - сортировка записей
Generate_Out(строка 3043) - вывод записей
Generate_Swap(строка 3068) - перестановка полей и записей
Generate_Change(строка 3089) - изменение типа и заголовка поля
ErrorInQuery(строка 3105) - сообщение об ошибке в запросе, связано с ручной правкой запросов и/или некорректными параметрами
TestZero(строка 3109) - проверка параметра на равенство нулю. В случае равенства вызывается ErrorInQuery
Выполнение запросов:
AddRun(строка 3118) - добавление полей и записей
DelRun(строка 3187) - удаление полей и записей
SortRun(строка 3227) - сортировка записей
OutRun(строка 3340) - вывод записей. Используются дополнительные функции:
Equal(строка 3290) - сравнение передаваемых значений в соответствии с типами
CalcCount(строка 3308) - подсчет количества записей с полем равным заданному
EarlierDontFind(строка 3316) - проверка на существование ранее идентичного поля по записям
FindRow(строка 3326) - поиск записи
SwapRun(строка 3464) - перестановка полей и записей
ChangeRun(строка 3518) - изменение типа и заголовка поля
RunQuery(строка 3583) - выполнение произвольного запроса. Выполняет ветвление и передачу процедурам указанных в запросе данных
2.4. Запуск и выполнение
Для запуска программы необходимо запустить DBX. exe. Сразу после запуска (при условии наличия в системе всех необходимых файлов, перечисленных в общих сведениях) будет открыто окно заставки(рис.17). После нажатия клавишь Enter или Esc будет загружено главное окно программы.
Программа может быть запущена с любого носителя данных, будь то: жесткий диск (HDD), дискета (FDD), CD-диск (CD - и DVD - ROM), различных внешних устройств (Flash и ZIP) и т.д., а также по локальной сети.
3. технологическая часть
3.1. Руководство системного программиста
3.1.1. Общие сведения о программе
Данная программа представляет собой удобное средство для работы с однотабличной ненормализованной базой данных. В программу встроена запросная система, позволяющая добавлять, удалять, сортировать, выводить, обменивать и преобразовывать данные, построенная на основе нескольких универсальных запросов, охватывающих весь круг конкретных решаемых задач.
Системные требования
Процессор не ниже Intel Pentium 133,
Операционная система семейства Windows не ниже 9x, желательно XP,
Оперативная память не менее 32MB,
Мышь (не менее 1 кнопки),
Клавиатура,
1 MB свободного пространства на жестком диске (плюс файлы баз данных, результирующих HTML и сохраненных в BMP диаграмм),
Монитор, поддерживающий режим не менее 800x600x8, желательно 1024x768x24.
Программа DB Xtension состоит из следующих частей:
Основного исполняемого файла DBX. exe
Вспомогательной программы assoc. exe
Набора wav-файлов в папке \Data
Файлы справки в папке \Help, ключевой файл - \Help\index. html
Из-за особенностей реализации Visual Basic также могут потребоваться библиотеки:
asyncfilt. dll
comcat. dll
ctl3d32. dll
msvbvm60. dll
oleaut32. dll
olepro32. dll
stdole. tlb
плюс библиотеки используемых ActiveX-компонентов
3.1.2. Структура программы
Программа включает в себя следующие файлы:
Формы:
AboutForm. frm (окно О программе)
DiagMasterForm. frm (мастер диаграмм)
DiagResForm. frm (окно построения диаграмм)
EditRecordForm. frm (редакрор записей)
InputForm. frm (окно ввода, замена InputBox)
MainForm. frm (главное окно программы)
MsgForm. frm (окна диалогов, замена MsgBox)
PasswordForm. frm (настройки безопасности и ввод пароля)
QueryMasterForm. frm (мастер запросов)
SelectForm. frm (окно выбора полей или записей)
TableForm. frm (окно создания нового поля)
TextEditForm. frm (редактор текстовых полей)
Модули:
API. bas (объявление и использование функций WinAPI)
DBConst. bas (глобальные описания)
DBTypes. bas (работа с БД как с файлом)
QueryRunner. bas (формирование и выполнение запросов)
Набор графических и аудио файлов
3.1.3. Проверка программы
Для проверки правильности функционирования программы выполните следующие действия:
После запуска программы и появления главной формы Создайте новую БД. В качестве имени укажите «test». Будет создан файл «test. dbx» размером в 13 байт, выведено сообщение, показана пустая таблица на закладке «Главная таблица» и во второе поле строки состояния выведен полный путь к файлу.
Используя мастер запросов добавьте в БД два поля «ФИО» и «Оценка» строкового и числового типа соответственно. Поле значение по умолчанию измените в поле «ФИО» на пустое. Также создайте новую запись.
В таблице появились две колонки с указанными заголовками и запись вида «'','0'». Измените значения этого поля на «Иванов И.И. | 4».
Аналогично добавьте записи «Петров П.П. | 5» и «Сидоров С.С. | 3». Должна получится таблица с соответствующими данными.
Используя Выборку на превышение записи по полю «Оценка» более 0 получите копию БД на закладке «Вывод? >0».
Удалите запись с ФИО Петров П.П., воспользовавшись Удалением записи с выбором «1) Петров П.П. - 5». Предупреждение отмените.
В полученной двухстрочной таблице воспользуйтесь Обменом записей. В результате таблица примет вид:
ФИО |
Оценка |
|
Сидоров С.С. |
3 |
|
Иванов И.И. |
4 |
Закройте созданную таблицу. Отсортируйте по полю ФИО против алфавита. Добавится закладка «Я->А» и таблица «Сидоров, Петров, Иванов».
В мастере запросов из таблицы сортировки выберите поле «Я->А» и тип диаграммы «Колонки». Установите режим 3D. Отрисованная столбчатая диаграмма должна содержать три столбца черного, серого и белого цветов со значениями процентов 25%, 42%, 33%. Сохраните полученную диаграмму в файл «diag. bmp». Одноименный файл будет создан по указанному пути.
Создайте гипертекстовый файл «hiper. html» с заголовком «Тестовый файл». Согласитесь на открытие после создания. Если в вашей системе установлен и зарегистрирован браузер, он будет запущен с содержимым «hiper. html».
Также можно настроить параметры безопасности (Настройки>Защита), сохранить БД на диск и повторно ее открыть для проверки правильности указанных настроек.
Выбор «? - >Помощь» приведет к открытию справки. Если этого не произошло, убедитесь, что выполняется условие запуска браузера с HTML-результатом (пункт X), а также в наличие непосредственно файлов справки.
3.2. Руководство оператора
3.2.1. Общие сведения о программе
Данная программа представляет собой удобное средство для работы с однотабличной ненормализованной базой данных. Максимально удобный и функциональный интерфейс облегчает работу с базой данных. Запросная система, позволяющая добавлять, удалять, сортировать, выводить, обменивать и преобразовывать данные, построена на основе нескольких универсальных запросов, охватывающих весь круг конкретных решаемых задач.
3.2.2. Выполнение программы
Для запуска программы необходимо запустить DBX. exe.
Для выхода из программы выполните одно из следующих действий:
Выберите Файл>Выход
Нажмите клавишу F12.
Нажмите правую кнопку на панели инструментов главного окна в виде кнопки выключения питания.
Все пункты меню Файл дублируются панелью инструментов в эквивалентном порядке.
Для создания, открытия, сохранения, закрытия и создания копии БД используйте одноименные пункты в меню Файл, либо кнопки на панели инструментов.
Почти вся работа с БД выполняется в Мастере запросов, расположенном в Запросы>Мастер запросов. Возможные запросы:
Добавление |
Поля |
Добавление нового поля в таблицу. Параметры задаются в отдельном окне. |
|
Записи |
Добавление пустой записи (поля заполнены значениями по-умолчанию). |
||
Удаление |
Поля |
Удаление поля. Настройки удаления в отдельном окне. |
|
Записи |
Удаление поля. Настройки удаления в отдельном окне. |
||
Сортировка |
По алфавиту |
Сортировка выбираемого поля в текущей таблице. Все настройки диалогами. |
|
Против алфавита |
|||
Выбор |
Сравнение с выражением |
Выбор тех записей, в которых выбранное поле находится в указанном логическом отношении с введенным значением. |
|
Подсчет количества |
Выбор тех записей, количество записей в полях в которых находится в указанном логическом отношении с введенным значением. |
||
Обмен |
Полей |
Перестановка двух выбранных полей. |
|
Записей |
Перестановка двух выбранных записей. |
||
Смена |
Типа поля |
Изменение типа поля (число - строка) |
|
Заголовка поля |
Смена заголовка поля на новое |
Для построения диаграмм выберите Результаты>Мастер диаграмм. Диаграммы можно строить только по полям числового типа.
Для сохранения БД в гипертекстовом формате воспользуйтесь пунктом меню Результаты>Формирование HTML. Достаточно указать путь к файлу и заголовок таблицы.
Для установки защиты выберите Настройки>Защита. Условием защиты по паролю является наличие произвольного, отличного от пробелов текста в поле ввода пароля. Если поле пусто никакие настройки не учитываются.
Для получения справки выберите? >Помощь.
3.2.3. Сообщения оператору (рис.12, рис.13, рис.14)
Мастер диаграмм:
Нельзя строить диаграмму по нечисловым данным! (попытка строить диаграмму по строковым значениям)
Редактор записей:
Восстановить поля из БД?
Поля были восстановлены!
Для редактирования чисел редактор не используется. (редактор предназначен лишь для удобства редактирования многострочного текста)
Сохранить поля в БД?
Поля были сохранены в БД!
Изменённое поле перекрывает уже существующее! Измените данные. (измененное поле стало эквивалентно другому полю, либо не было внесено изменений в данные)
Числовое значение превышает разрядную сетку! (введено целое число, большее по модулю 2147483647)
Значение не является целым числом! (введено значение, не являющееся целым числом либо 0)
Строка пуста. Продолжить? (измененная строка пуста)
Мастер запросов:
Запрос отменен!
Список запросов не пуст. Выйти? (были созданы и не выполнены запросы)
Очистить список запросов?
Удалить выбранный запрос из списка?
Запросы выполнены.
Выводить в новую таблицу? Нет для вывода в уже существующую. (запрос может выводить результат либо в уже существующую таблицу, дописывая в конец, либо создать новую)
Не задано относительное значение! (для выполнения запроса недостаточно данных)
Ошибка в запросе! (произошла ошибка во время интерпретации или выполнения запроса)
Добавляемое поле уже существует!
Добавляемый столбец дублируется!
Нельзя добавлять записи в БД без полей! (запись добавляется, а полей в БД еще нет)
В БД нет полей!
В БД нет записей!
Нечего сортировать! (вызвана сортировка пустой БД)
Не с чем сравнивать! (сравнения по пустой БД)
Эквивалентом вывода целочисленного столбца не является целое число! Условие всегда истинно! (в запросе вывода указано строковое значение, а вывод идет по числовому полю)
Добавляемая запись уже существует!
Поле строкового типа преобразуется в числовой тип. Все нечисловые значения будут преобразованы в 0. Продолжить? (при изменении типа поля из строкового в числовое все строки, которые нельзя преобразовать в целые числа, будут заменены 0).
Поле с названием XXX уже существует!
Окно настроек создаваемого поля:
Введенное значение не является целым числом. Преобразовано к '0'.
Главное окно:
Недостаточно прав для выполнения действия! (открыта БД, защищенная паролем, в режиме чтения и производится попытка изменения данных)
Ошибка удаления столбца!
Удалить столбец?
Ошибка удаления записи!
Удалить запись?
БД сохранена!
БД повреждена! (при загрузке БД произошла ошибка)
Пароль принят! (БД, защищенная паролем, открыта с корректно введенным паролем)
Только чтение! (БД, защищенная паролем, открыта в режиме чтения)
Пароль не принят! Доступ запрещён!
БД загружена!
БД создана с настройками по-умолчанию!
литература
Microsoft Corporation Microsoft Visual Basic 6.0 Programmer's Guide, Microsoft Press, 2003 г.
Microsoft® Win32® Programmer's Reference, 1996 г.
Приложение 1
Исходный код программы
Форма: MainForm. frm
0' разница ширины и высоты формы и TabStrip'а
1Dim dW1%, dH1%
2' разница ширины и высоты TabStrip'а и ListView'а
3Dim dW2%, dH2%
4' последний выбранный элемент
5Dim saveItemIndex%
6' текущая таблица
7Public DBCurIndex%
8' последний Image, над которым был курсор
9Dim OldImageIndex%
10
11Private Sub AboutProg_Click()
12 CoolTimer. Enabled = False
13 AboutForm. Show vbModal
14 CoolTimer. Enabled = True
15End Sub
16
17Private Sub CloseDB_Click()
18 CoolTimer. Enabled = False
19
20 If DBChanged Then
21 If (MsgForm. QuestMsg("В БД внесены не сохранённые изменения. Закрыть не сохраняя? ") <> resOk) Then GoTo exit_
22 End If
23
24 SB. Panels(3). Text = ""
25 Call ClearAll
26 Call ShowTable(-1)
27 Call DisEnImage(2, 1)
28 Call DisEnImage(3, 1)
29 Call DisEnImage(4, 1)
30
31exit_:
32
33 CoolTimer. Enabled = True
34End Sub
35
36' index,mode / сегмент, смещение
37Sub DisEnImage(Index%, Mode%)
38 CoolBut(Index). Picture = CoolImgs. ListImages(1 + (Index * 3 + Mode)). Picture
39 CoolBut(Index). Enabled = (Mode <> 1)
40End Sub
41
42Sub RetImage()
43 If (OldImageIndex > - 1) Then
44 If CoolBut(OldImageIndex). Enabled Then
45 Call DisEnImage(OldImageIndex, 0)
46 Else
47 Call DisEnImage(OldImageIndex, 1)
48 End If
49 End If
50 OldImageIndex = - 1
51End Sub
52
53Sub CoolMouseMove(Index%)
54 If (Index = OldImageIndex) Then Exit Sub
55 Call DisEnImage(Index, 2)
56 Call RetImage
57 OldImageIndex = Index
58End Sub
59
60Private Sub CoolBut_Click(Index As Integer)
61 Call DisEnImage(Index, 0)
62 Select Case Index
63 Case 0: Call CreateDB_Click
64 Case 1: Call OpenDB_Click
65 Case 2: Call SaveDB_Click
66 Case 3: Call CloseDB_Click
67 Case 4: Call ResCopyDB_Click
68 Case 5: Call ExitPr_Click
69 End Select
70End Sub
71
72Private Sub CoolTimer_Timer()
73 Dim Point As POINTAPI
74 Dim R As RECT, R2 As RECT
75 Call GetCursorPos(Point)
76 Call GetWindowRect(Frame1. hwnd, R)
77 For i% = 0 To 5
78 If (Not CoolBut(i). Enabled) Then GoTo loop_
79 x% = R. Left + CoolBut(i). Left / Screen. TwipsPerPixelX
80 y% = R. Top + CoolBut(i). Top / Screen. TwipsPerPixelY
81 X2% = x + CoolBut(i). Width / Screen. TwipsPerPixelX
82 Y2% = y + CoolBut(i). Height / Screen. TwipsPerPixelY
83 R2. Left = x
84 R2. Top = y
85 R2. Right = X2
86 R2. Bottom = Y2
87 If ((Point. x >= R2. Left) And (Point. x <= R2. Right) And (Point. y >= R2. Top) And (Point. y <= R2. Bottom)) Then
88 Call CoolMouseMove(i)
89 Exit Sub
90 End If
91loop_:
92 Next i
93 Call RetImage
94End Sub
95
96Private Sub CreateDB_Click()
97 CoolTimer. Enabled = False
98 Dlgs. FileName = ""
99 Dlgs. ShowSave
100 If (Dlgs. FileName <> "") Then
101 ' создаю новую БД
102 Call NewDB(Dlgs. FileName)
103 ' вывожу путь к БД
104 SB. Panels(3). Text = DBPath
105 ' разрешения
106 Call DisEnImage(2, 0)
107 Call DisEnImage(3, 0)
108 Call DisEnImage(4, 0)
109 Call ShowTable(DBCurIndex)
110 End If
111 CoolTimer. Enabled = True
112End Sub
113
114Private Sub DiagDraw_Click()
115 CoolTimer. Enabled = False
116 DiagMasterForm. Show vbModal
117 CoolTimer. Enabled = True
118End Sub
119
120Private Sub ExitBut_Click()
121 Call ExitPr_Click
122End Sub
123
124Private Sub ExitPr_Click()
125 CoolTimer. Enabled = False
126 If Not DBChanged Then
127 End
128 Else
129 If (MsgForm. QuestMsg("В БД внесены не сохранённые изменения. Выйти не сохраняя? ") = resOk) Then End
130 End If
131 CoolTimer. Enabled = True
132End Sub
133
134Private Sub File_Click()
135 SaveDB. Enabled = DBPath <> ""
136 CloseDB. Enabled = SaveDB. Enabled
137 ResCopyDB. Enabled = SaveDB. Enabled
138End Sub
139
140Private Sub HelpProg_Click()
141 CoolTimer. Enabled = False
142 Call ShellExecute(hwnd, "open", "Help\index. html", "", "", 0)
143 CoolTimer. Enabled = True
144End Sub
145
146Sub CreateHTML(Path$)
147 Call DeleteFile(Path)
148 DBI% = FreeFile
149 Open Path For Binary As DBI
150
151 Capt$ = InputForm. InputVal("Введите заголовок для таблицы")
152
153 HTMLHeader$ = Replace("<html><head><meta http-equiv=~Content-Language~ content=~ru~>" + _
154 "<meta http-equiv=~Content-Type~ content=~text/html; charset=windows-1251~>", "~", Chr(34))
155
156 HTMLInfo$ = "<title>" + Capt + "</title>"
157
158 HTMLStart$ = Replace("</head><body><div align=~center~><table border=~1~ cellspacing=~2~ style=~border-collapse: collapse~>", "~", Chr(34))
159
160 HTMLEnd$ = "</table></div><br><br><br><hr><i>Файл сгенерирован программой DB Xtension по содержимому БД </i><b>' " + DBPath + "' </b></body></html>"
161
162 HTMLCaption$ = Replace("<tr><td colspan=~" + CStr(DB(DBCurIndex). Header. ColCount) + "~ align=~center~ bgcolor=~#66CCFF~><font color=~#FFFF00~ size=~5~>" + Capt + "</font></td></tr>", "~", Chr(34))
163
164 HTMLRowS$ = "<tr>"
165 HTMLRowE$ = "</tr>"
166
167 If (DB(DBCurIndex). Header. ColCount > 0) Then ColWidth% = 100 \ DB(DBCurIndex). Header. ColCount
168
169 HTMLCols$ = Replace("<td bgcolor=~#999999~ width=~" + CStr(ColWidth) + "%~ align=~center~><b><font face=~Arial~ color=~#FFFFFF~>^</font></b></td>", "~", Chr(34))
170
171 HTMLCells$ = Replace("<td width=~" + CStr(ColWidth) + "%~ align=~center~>^</td>", "~", Chr(34))
172
173 Put DBI,, HTMLHeader
174 Put DBI,, HTMLInfo
175
176 If (DB(DBCurIndex). Header. ColCount > 0) Then
177 Put DBI,, HTMLStart
178 Put DBI,, HTMLCaption
179
180 Put DBI,, HTMLRowS
181 For c% = 0 To DB(DBCurIndex). Header. ColCount - 1
182 Put DBI,, Replace(HTMLCols, "^", CStr(DB(DBCurIndex). Cols(c). title))
183 Next c
184 Put DBI,, HTMLRowE
185
186 For R% = 0 To DB(DBCurIndex). Header. RowCount - 1
187 Put DBI,, HTMLRowS
188 For c% = 0 To DB(DBCurIndex). Header. ColCount - 1
189 tmp$ = CStr(DB(DBCurIndex). Rows(R). Fields(c))
190 If (Trim(tmp) = "") Then tmp = " "
191 Put DBI,, Replace(HTMLCells, "^", tmp)
192 Next c
193 Put DBI,, HTMLRowE
194 Next R
195
196 Put DBI,, HTMLEnd
197 Else
198 Put DBI,, "</head><body>База не содержит данных</body></html>"
199 End If
200
201 Close DBI
202
203 If (MsgForm. QuestMsg("Файл '" + Path + "' создан. Открыть? ") = resOk) Then
204 Call ShellExecute(hwnd, "open", Path, "", "", 0)
205 End If
206End Sub
207
208Private Sub HTMLCreator_Click()
209 CoolTimer. Enabled = False
210 HTMLPath. FileName = ""
211 HTMLPath. ShowSave
212 If (HTMLPath. FileName <> "") Then
213 Call CreateHTML(HTMLPath. FileName)
214 Else
215 Call MsgForm. ErrorMsg("Формирование HTML-документа отменено! ")
216 End If
217 CoolTimer. Enabled = True
218End Sub
219
220Private Sub ListView_DblClick()
221 If (saveItemIndex > 0) Then
222 Load EditRecordForm
223 With EditRecordForm
224. CellList. Clear
225. ERFDBIndex = DBCurIndex
226 Call. LoadData(saveItemIndex - 1)
227 Call. OverloadList
228. Show vbModal
229 End With
230 End If
231End Sub
232
233Private Sub ListView_ItemClick(ByVal Item As MSComctlLib. ListItem)
234 saveItemIndex = Item. Index
235End Sub
236
237Private Sub ListView_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
238 saveItemIndex = 0
239End Sub
240
241Private Sub OptDB_Click()
242 Security. Enabled = DBPath <> ""
243End Sub
244
245Private Sub Form_Load()
246' регистрации расширения
247 Call ShellExecute(0, "", "assoc. exe", App. Path + "\" + App. EXEName + ". exe", "", 0)
248 DBCurIndex = 0
249 UserIsAdmin = True
250 saveItemIndex = 0
251 OldImageIndex = - 1
252 Call ClearAll
253 dW1 = Width - TabStrip. Width
254 dH1 = Height - TabStrip. Height
255 dW2 = Width - ListView. Width
256 dH2 = Height - ListView. Height
257 Call DisEnImage(0, 0)
258 Call DisEnImage(1, 0)
259 Call DisEnImage(2, 1)
260 Call DisEnImage(3, 1)
261 Call DisEnImage(4, 1)
262 Call DisEnImage(5, 0)
263End Sub
264
265Private Sub Form_Resize()
266 CoolBar1. Width = 2 * Width
267
268 Min% = MainForm. Width - dW2
269 If (Min < 0) Then: Min = 0
270 ListView. Width = Min
271
272 Min = MainForm. Height - dH2
273 If (Min < 0) Then: Min = 0
274 ListView. Height = Min
275
276 Min = MainForm. Width - dW1
277 If (Min < 0) Then: Min = 0
278 TabStrip. Width = Min
279
280 Min = MainForm. Height - dH1
281 If (Min < 0) Then: Min = 0
282 TabStrip. Height = Min
283End Sub
284
285Private Sub Form_Unload(Cancel%)
286 If DBChanged Then
287 If (MsgForm. QuestMsg("Выйти? ") = resNo) Then Cancel = 1
Подобные документы
СУБД - многопользовательские системы управления базой данных, специализирующиеся на управлении массивом информации. Запросы на выборку и изменение данных, формирование отчетов по запросам выборки. Схема базы данных. Программа по управлению базой данных.
реферат [1,9 M], добавлен 27.12.2013Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.
отчет по практике [1,2 M], добавлен 08.10.2014Появление системы управления базами данных. Этапы проектирования базы данных "Строительная фирма". Инфологическая и даталогическая модель данных. Требования к информационной и программной совместимости для работы с базой данных "Строительная фирма".
курсовая работа [93,0 K], добавлен 31.03.2010Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.
курсовая работа [1010,9 K], добавлен 08.10.2015Обоснование необходимости систем управления базами данных на предприятиях. Особенности разработки программного обеспечения по управлению базой данных, обеспечивающего просмотр, редактирование, вставку записей базы данных, формирование запросов и отчетов.
курсовая работа [1,5 M], добавлен 23.01.2010Функции, позволяющие работать с базой данных MySQL средствами РНР. Соединение с сервером и его разрыв. Создание и выбор базы данных. Доступ к отдельному полю записи. Комплексное использование информационных функций. Запросы, отправляемые серверу MySQL.
лекция [3,5 M], добавлен 27.04.2009Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.
курсовая работа [2,2 M], добавлен 01.02.2013Даталогическая и инфологическая модели системы управления базой данных футбольного клуба. Обоснование выбора даталогической модели данных. Разработка структуры и системы управления базой данных. Выбор системы программирования, создание форм ввода.
курсовая работа [406,0 K], добавлен 24.12.2014Проектирование базы данных Access. Система управления базами данных. Создание и обслуживание базы данных, обеспечение доступа к данным и их обработка. Постановка задач и целей, основных функций, выполняемых базой данных. Основные виды баз данных.
лабораторная работа [14,4 K], добавлен 16.11.2008Программа перенесения данных из таблицы Word в таблицу базы данных. Алгоритм решения задачи в виде текстового описания. Описание базы данных (структура таблиц, схема). Копии с экрана форм для работы с базой данных при разработке их в конструкторе.
контрольная работа [914,3 K], добавлен 26.03.2011