Курсовая работа (т): Разработка приложения в среде Delphi, взаимодействующего с базами данных в Access

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка приложения в среде Delphi, взаимодействующего с базами данных в Access

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

. НАЗНАЧЕНИЕ РАЗРАБОТАННЫХ ПРОГРАМНЫХ СРЕДСТВ

. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ ACCESS

.1 Типы данных Access

.2 Свойства полей Access

. СРЕДСТВА РАЗРАБОТКИ

.1 Компоненты наборов данных ADOTable, ADOQuery, ADOStoredProc, ADODataSet

.2 Понятие базы данных

.3 Структура базы данных для клиники, используемая в приложении

. ВЗАИМОДЕЙСТВИЕ ПОЛЬЗОВАТЕЛЯ С ПРИЛОЖЕНИЕМ

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

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

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

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

Целью курсовой работы являлось разработать приложение в среде Delphi, взаимодействующее с базами данных в СУБД Access, которая содержит различные данные о клинике и отображает их пользователю, по его запросу. В частности, требовалось разработать многооконное приложение, в котором есть возможность просмотра любого из справочников, его редактирование, фильтрация данных и выбор необходимых сведений с помощью запросов, которые составляются пользователем.

В ходе выполнения курсовой работы были решены следующие задачи:

-       разработана база данных для клиники;

-       проработана структура базы данных;

-       разработано многооконное приложение;

-       разработаны экранные формы для отображения справочников;

-       разработан алгоритм построения запросов, облегчающих фильтрацию данных пользователю;

-       была налажена работа между приложением и СУБД Access.

1. НАЗНАЧЕНИЕ РАЗРАБОТАННЫХ ПРОГРАМНЫХ СРЕДСТВ


Разработанное приложение выполнено для осуществления работы с медицинскими данными с последующей их визуализацией. Разработано в интегрированной среде разработки Delphi. В результате было разработано многооконное приложение, имеющее множество экранных форм для отображения таблиц таких как:

-       врачи;

-       диагноз;

-       должности;

-       лекарства;

-       пациенты;

-       процедуры;

-       назначение лекарств;

-       назначение процедур;

-       отделение;

-       палата.

На каждой из экранных форм имеются пункты меню, позволяющие фильтровать таблицы по полям, необходимым пользователю. После нажатия этого пункта меню открывается экранная форма, содержащая элементы управления, каждый из которых соответствует полям таблицы, для которой открыто окно.

Пользователь проводит нужные ему манипуляции с прикладной программой, тем самым, посылая различные запросы данных на сервер с базой данных, предназначенной для этого приложения. После чего на сервере выполняются эти запросы и приложению посылаются нужные ему данные, либо изменяются данные в самой базе (как показано на рисунке 1.1).

Рисунок 1.1 - Взаимодействие пользователя с БД

2. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ ACCESS

визуализация поле база экранный

2.1 Типы данных Access


В таблице перечисляются типы данных Access и их описание.

Таблица 1 - Типы данных Access

Название поля

Описание

Text (Тип данных текстовый)

Символьные, текстовые данные, объем которых недолжен, превышать 255 символов, по умолчанию 50.

Memo (Тип данных текстовый)

Текстовый тип данных, ограничения до 64000 символов, поля этого типа не индексируются.

Integer (Тип данных числовой)

Числовые данные, размер которых определяется, числом, указанным в свойствах полей.

Data, Time

Предназначен для хранения даты и времени.

Денежный (Тип данных числовой)

Разновидность типа данных для хранения, денежных эквивалентов, размером 15 разрядов до запятой, и четыре разряда после.

Счетчик (Тип данных числовой)

Является разновидностью числового типа, может иметь только целое значение, автоматически увеличивается на заданный шаг, по умолчанию +1, значения не могут повторяться.

Логический

Предназначен для хранения логических значений, для команд и операций : лож\истинна, да\нет, true\false, 1\0.

Ole

Предназначен для хранения объектов (файлов), которые созданы в других приложениях. Поле не индексируется.

Гиперссылка

В полях храниться ссылки, представляющие собой путь к файлу на каком-либо носители, или ресурсе сети.

Мастер подстановок

Позволяет подставлять значение полей, в виде простого или комбинированного списка.


2.2 Свойства полей Access


В приведенной ниже таблице перечисляются возможные свойства полей Access и их описание.

Таблица 2 - Свойства полей Access

Свойства поля

Размер поля

Определяет максимальную длину текстового или числового поля, так как если размер подобран неоптимальное, расходуется, лишня память.

Формат поля

Устанавливает формат отображения данных в форме, запросе, отчете.

Число десятичных знаков.

Количество знаков после запятой в десятичном числе.

Маска ввода

Задает маску (шаблон), при вводе данных в таблицу или форму.

Значение по умолчанию

Содержит значение, установленное по умолчанию, для всех новых записей таблицы.

Подпись

Задает подпись поля, которое выводиться в формах, отчетах, таблицах (не путать с именем поля).

Условие на значение

Позволяет задать то условие, которое проверяется при вводе данных в поле.

Сообщение об ошибке

Задается текст, сообщение выводится в диалоговом окне, если вводимые данные не соответствуют, заданному условию на значение.

Обязательное поле

Определяет, может ли поле быть пустым или нет.

Пустые строки

Определяет возможность ввода в поля пустых строк с пробелами.

Индексированное поле

Задает индексы, для ускоренного поиска информации в таблице.


3. Средства разработки


3.1 Компоненты наборов данных ADOTable, ADOQuery, ADOStoredProc, ADODataSet


Рассмотрим сначала особенности компонентов наборов данных ADO на примере ADOTable. Этот компонент может использоваться в приложениях вместо компонента Table, выполняющего аналогичные функции. Он вступает в контакт с указанной таблицей базы данных. База данных задается свойствами ConnectionString или Connection. Для управления таблицей в приложение вводится, помимо компонента ADOTable, обычный компонент источника данных DataSource, в свойстве DataSet которого задается имя компонента ADOTable. Далее к этому источнику данных DataSource подключаются любые компоненты отображения данных.

Имя таблицы, как и в компоненте Table, задается свойством TableName. Однако не все провайдеры поддерживают непосредственный доступ к таблице по ее имени. Они могут требовать доступ с помощью оператора SQL SELECT. Какой именно вариант доступа: прямой или посредством оператора SELECT будет использоваться, определяется свойством TableDirect. По умолчанию TablcDirect = Создание приложений для работы с базами данных в сети false, что означает автоматическое создание компонентом ADOTable соответствующего оператора SELECT. Соединение с базой данных осуществляется так же, как и в компонентах BDE, методом Open или установкой в true свойства Active. Но при этом, если связь с базой данных осуществляется через компонент ADOConnection, взаимосвязь свойства Active компонента ADOTable и свойства Connected компонента ADOConnection. В компоненте ADOTable имеется два свойства, характеризующие курсор, используемый при навигации по таблице. Одно из них - Cursor Location. Другое - CursorType описывает иные характеристики курсора. Это свойство может иметь значения:

-       ctUnspecified;

-       ctOpenForwardOnly;

-       ctKeyset;

-       ctDynamic;

-       ctStatic.

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

Этот тип статического курсора обеспечивает копирование записей. Изменения данных, сделанные другими пользователями, невидимы.

Свойство Marshal Options определяет, какие именно записи возвращаются на сервер, если при работе используется клиентский курсор. При значении MarshalOptions = moMarshalAll (значение по умолчанию) на сервер возвращаются все записи, считанные в локальный набор записей клиента. При значении MarshalOptions = mo Marshal Modi fiedOnly на сервер возвращаются только измененные записи.

Свойство CachcSize указывает, сколько записей заносится в локальный буфер оперативной памяти. По умолчанию CacheSize = 1. Если задать, например, CacheSize = 10, то при открытии базы данных в буфер загрузятся первые 10 записей. Пока будет идти работа с этими записями, все операции будут проводится в оперативной памяти без обращения к базе данных. Если указатель таблицы вышел за пределы 10, то в память загрузятся следующие 10 записей и т.д. Естественно, что буферизация записей повышает эффективность работы.

Основные способы работы с ADOTable не отличаются от способов, для Table. Точно так же двойной щелчок на компоненте вызывает Редактор Полей, в котором можно задать свойства отдельных полей, ничем не отличающиеся от полей компонентов BDE. Впрочем, одно печальное отличие есть: в компонентах ADO невозможно работать со словарями. Так что в каждом компоненте свойства полей приходится задавать вручную. Кроме того, надо иметь в виду, что не все драйверы ADO могут работать с любыми типами полей. Например, драйвер Paradox ADO не работает с полями изображений. Так что в таблице Pers базы данных dbP, используемой в данной книге, не будет доступно поле Photo - фотографии сотрудников. Для драйвера InterBase (в наших примерах для базы данных ib) такого ограничения нет.

Из редактора полей так же, как в компонентах BDE, можно перетаскивать поля мышью на форму. При этом на форме автоматически будут создаваться соответствующие компоненты отображения данных.

Программный доступ к полям осуществляется так нее, как в компоненте Table: по индексу через свойство Fields[i:integer], по имени поля с помощью метода FieldByName('<HMfl>'), по имени объекта поля.

Ограничения на вводимые значения в компоненте ADOTable можно обеспечивать только на уровне полей. Свойства, аналогичного Constraints в компоненте Table, в ADOTable нет.

Связь друг с другом компонентов ADOTable, работающих с разными таблицами, одна из которых главная, а другая - вспомогательная, осуществляется так же, как в компонентах Table, с помощью свойств MasterSource и Master Fields.

Упорядочивание отображаемых записей производится установкой свойства IndexFieldNames. В этом свойстве можно задавать любое сочетание имен полей, по которым вы хотите упорядочить отображение, разделяя их точками с запятой. Например, строка 'Dep' упорядочит записи в таблице Pers по значению поля Dep -отдел. А строка 'Dep;Fam;Nam;Par' упорядочит записи по значению поля Dep -отдел, а внутри каждого отдела упорядочит по фамилии, имени и отчеству сотрудников. В отличие от свойства IndexFieldNames компонентов BDE, в компонентах ADO можно задавать любые сочетания полей, независимо от того, была ли индексирована таблица при ее создании по этим полям. В этом проявляется дополнительная гибкость компонентов ADO. Но зато в этих компонентах не работает свойство Index Name (хотя оно присутствует в Инспекторе Объектов), позволяющее использовать индексы, сформированные при создании таблицы.

Свойство только для чтения IndexFieldCount позволяет определить число полей, использованных при индексации.

Фильтрация отображаемых данных может осуществляться так же, как в компонентах BDE, с помощью свойства Filter, в котором записываются условия отбора (см. разд. 9.5.6). Отличие от компонентов BDE заключается в том, что в компонентах ADO в строке Filter имена полей обязательно должны отделяться пробелами от операций отношения. Также пробелами должны окружаться логические операции and и or. Например, если в компонентах BDE фильтр может быть записан в виде:

(Year_b<=1960)and (Year_b>=1940)

то в компонентах ADO эта строка должна иметь вид:

[Year_b <= 1960) and <Year_b >= 1940)

Свойство Filter работает, если свойство Filtered = true.

Можно также использовать для фильтрации обработчик событий OnFilterRecord. Эти события наступают каждый раз при смене активной записи, если свойство Filtered = true. В обработчике этих событий вы можете анализировать любые поля записи И возвращать значение параметра Accept = true, если поля записи удовлетворяют сформулированным вами условиям, и Accept = false в противном случае. При использовании обработчика событий OnFilterRecord надо следить за тем, чтобы строка свойства Filter не противоречила условиям, сформулированным в обработчике OnFilterRecord. Нельзя также изменять индексацию (свойство IndexFieldNames). пока Filtered = true, так как это может привести к зацикливанию программы. Перед сменой индексации надо установитьв false, затем изменить IndexFieldNames, а затем установить Filtered в true.

Создание приложений для работы с базами данных в сети

Дополнительные возможности фильтрации обеспечивает свойство только времени выполнения FilterGroup. Этот параметр позволяет фильтровать записи, которые изменены, или должны были быть изменены, или удалены. Свойство может иметь следующие значения:

-       fgUnassigncd;

-       fgNone;

-       fgPendingRecoгds;

-       fgAffесtedReсогds;

-       fgFetchedRecords;

-       fgPredicate;

-       fgConflictingRecords.оказывает влияния на фильтрацию. Значение по умолчанию J Отменяет текущую фильтрацию и делает видимыми все записи.

Отфильтровываются записи, которые были изменены, но еще не занесены в таблицу методом UpdateBatch или прерваны методом CancclBatch.

Отфильтровываются последние измененные записи. Отфильтровываются записи, которые были изменены при последней очистке кэша.

Отфильтровываются только что удаленные записи. Отфильтровываются записи, которые должны были быть изменены, но это не получилось из-за ошибок. Методы, используемые при программировании работы с базой данных, в ADOТаЫе в основном те же, что в Table. Навигация по таблице осуществляется методами First, Next, Last и Prior. При редактировании данных используются также методы, рассмотренные ранее для Table: Insert, Edit, Post и другие. Из методов поиска В ADO реализованы только методы Locate и Lookup. Из методов, отсутствующих в компонентах BDE, интересными представляются методы сохранения набора данных в файле и чтения его из файла. Сохранение в файле осуществляется методом SaveToFUe;SaveToFile (const Filename: String = ' ' ,-

Format: TPersistForraat = pfADTG);

Параметр FileName указывает имя файла, в котором сохраняется набор данных. Необязательный параметр Format определяет формат файла. Этот параметр может принимать одно из двух значений: pfADTG - формат ADTG (AdvancedData Tablegram), или pfXML - формат XML (для версий ADO 2.1 и выше). По умолчанию принято значение pfADTG. Так что если оно устраивает, то сохранение набора данных в файле может осуществляться, например, таким оператором:.SaveToFile('Test.adt');

Чтение данных из файла осуществляется процедурой LoadFromFile:

procedure LoadFromFile(const FileName: WideString) .-где FileName - имя файла. Загружать файл в набор данных можно даже при закрытом соединении с базой данных. В момент загрузки соединение автоматически откроется.

Источник: https://www.bibliofond.ru/detail.aspx?id=784472