Разработка информационной системы "Аптека"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?ляются источниками данных для этих таблиц.
Добавив все размещенные на модуле данных объекты, получили следующий состав объектов (Рис. 5)
Рис. 5
Для формирования набора данных в свойствах SQL, для каждого набора данных написан запрос на языке Transact-SQL (T-SQL) (Рис. 6)
Рис. 6
С целью ускорения работы разрабатываемого приложения и освобождения оперативной памяти при подключение к базе данных была написана процедура OnShow, активация происходит не всех наборов данных одновременно - при запуске приложения, а каждого в отдельности набора данных - при выполнении какого-либо события, например, при отображении формы или активации родительского набора данных.
Для того Чтобы объекты Модуля данных (модуля Unit2) стали доступны в модуле Unit1, в подразделе Uses раздела Implementation модуля Unit1 было прописано подключения модуля Unit2 ( uses Unit2)
Источники данных (ТDataSource) связаны с соответствующими наборами данных (TADOQuery) через свойство DataSet у источников данных.
Рис. 7
Для отображения содержимого наборов данных на форме были размещены такие компоненты как таблица cxGrid (с вкладки Dev Express), стандартные компоненты DBEdit, DBNavigator
Связанные через свойство DataSource с соответствующими источниками данных. А также, для компонентов DBEdit через свойство DataField - с соответствующими полями таблиц БД.
Для отражения полей данных, которые будут отражаться при выполнении приложения, в свойствае таблицы (cxGrid) были добавлены нужные поля, нажав на кнопку Retrieve Fields (Рис. 8)
базы данный информационный
Рис.8
В базе данных присутствует фильтр, компонент RadioGroup с двумя (Рис. 9 ) переключателями (все, по содержанию)
Рис. 9
Этот фильтр-переключатель будет давать возможность отображать (запрашивать из БД), или:
все записи из таблицы заказ, цена базы данных,
только те, которые будут соответствовать выбранной пользователем строке в таблице заказчик на экранной форме.
Используемый код фильтра.
Рис. 10
В таблице услуги было создано поле Фото
Для его создания в таблице услуги в SQL Server было добавлено поле с типом Varbinary(MAX)
При добавлении в программу этого поля, в его свойствах был указан тип Properties-Imag (Рис. 11).
Рис.11
Чтобы иметь возможность добавлять изображения в формате BMP в Базу данных было размещено на форме компонент OpenPictureDialog (Рис. 12).
Рис. 12
Для удобства в последствии выбора BMP-файлов в свойстве Filter этого компонента устанановили фильтр на выбор файлов (Рис. 13).
Рис. 13
Далее, был создан обработчик на событие OnClick у кнопки Button и вписан следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);DM do begindlgOpenPic1.Execute then beginnot (T1.State in [dsInsert,dsEdit]) then.Edit;
//cxgrdbclmnGrid1DBTableView1photo.LoadFromFile(dlgOpenPic1.FileName);;;;
Стандартным компонентом для управления записями БД через Delphi-приложение служит компонент DBNavigator с закладки Data Controls (Рис. 14)
Рис 14
Связав его с источником данных (DataSource) через свойство DataSource становится возможным добавлять, отменять добавление и изменение, удалять, сохранять записи в БД
Но чтобы разобраться в логике работы компонента был рассмотрен другой способ управления записями БД при помощи создания отдельных обработчиков событий OnClick, выполняемых, например, при нажатии на соответствующие кнопки на форме
Обработчик события OnClick, выполняемый при нажатии на кнопку Добавить (это еще не сохранение записи в базу данных)
with DM do beginzakazchik.State=dsBrowse then begin.Append;.SetFocus;;
end;
Обработчик события OnClick, выполняемый при нажатии на кнопку Сохранить
with DM do beginzakazchik.State in [dsInsert,dsEdit] then.Post;;
Бывает, что при сохранении информации в БД возникают ошибки, например, обязательное поле не заполнено, или БД доступна только для чтения. Действия по исправлению ошибок, выдаче окон-комментариев и пр. можно предусмотреть в обработчике события OnPostError у набора данных, предварительно подключив модули Controls и Dialogs.
MessageDlg(Ошибка. Проверьте поля кодзаказчика и кодцены, mtError,[mbOK],0);
if MessageDlg(Отменить изменения?,
mtConfirmation,[mbYes,mbNo],0)=mrYeszakazchik.Cancel Form1.DBEdit1.SetFocus;
Обработчик события OnClick, выполняемый при нажатии на кнопку Отменить.
with DM do beginzakazchik.State in [dsInsert,dsEdit] then.Cancel;
end;
Метод Cancel набора данных отменяет внесенные изменения, не сохраненные пока в БД
Обработчик события OnClick, выполняемый при нажатии на кнопку Удалить.
with DM do beginzakazchik.State=dsBrowse then
if MessageDlg(Удалить запись?+#10#13+
При этом соответствующие записи в +
подчиненных таблицах средствами СУБД будут удалены! ,,[mbYes,mbNo],0)=mrYes then.Delete;
end;
Метод Delete набора данных удаляет выбранную запись из БД. Удаление в данном обработчике произойдет только при ответе Yes в появившемся окне диалога. При этом средствами СУБД возможно каскадное удаление записей в подчиненных таблицах. (Рис. 15)
Рис. 15
Для удобства использования базы данных был использован механизм транзакций
Транзакция представляет собой отдельную последовательность операций, обычно выполняемую для нескольких таблиц БД (нескольких наборов данных). Транзакция после своего завершения переводит БД из одного целостного непротиворечивого состояния в другое.
С целью выполнения в разрабатываемом приложении инструкций (операторов