Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Разработка баз данных в среде программирования Delphi использованием BDE (Borland Database Engine)Стр 1 из 7Следующая ⇒
Русификация надписей над компонентами и на колонках сетки Дважды щелкните на компоненте Table1. При этом появится редактор списка полей таблицы (рис. 18).
Замените значения свойства DisplayLabel каждого столбца на русскоязычное в соответствии с таблицей, показанной на рис. 19. Одновременно с этим замените значение свойстваCaption каждой метки, расположенной над соответствующим компонентом отдельного поля таблицы. Теперь все надписи будут отображаться по-русски (рис. 20). Рис. 20. Вид формы после русификации надписей
Центрирование надписей на колонках сетки Как видно из рис. 20 названия колонок сетки прижаты к левому краю, что нельзя считать удачным. Лучше расположить их по центру. Дважды щелкните на сетке DBGrid1. При этом появится редактор колонок сетки. Добавьте в него все поля связанной с сеткой таблицы. Удалите ненужные поля, затем для каждого оставшегося поля измените значение свойства Title.Alighment на taCenter (рис. 21). Рис. 21. Центрирование надписей на заголовках колонок сетки Теперь заголовки колонок будут располагаться по центру (рис. 22). Рис. 22. Вид сетки после центрирования надписей на заголовках колонок сетки
Вычисление и редактирование данных Редактирование текстовых и числовых данных Оставим пока в стороне вопрос о замене картинки для текущей записи таблицы. Рассмотрим особенности замены текстовых и числовых значений. Такая замена может быть проведена вводом с клавиатуры в желаемую ячейку сетки или в строку ввода индивидуального компонента для определенного поля. Обратите внимание, что в момент начала изменения значения навигатор DBNavigator1 реагирует на это активацией кнопки (сохранить изменения). После внесения изменений чтобы зафиксировать их в таблице можно щелкнуть на этой кнопке либо передвинуть указатель на другую запись. Обратите также внимание, что значения поля LenIn в сетке исправить не удается. В индивидуальном же поле это сделать можно (на него не распространяется запрет, сделанный в сетке). Однако такое редактирование не даст результата поскольку в момент сохранения изменений процедура BeforePost все-равно пересчитает значение этого поля по-своему. Чтобы добавить новую запись достаточно на навигаторе щелкнуть на кнопке (добавить запись). Далее можно водить значения в ячейки записи.
Автономизация приложения Об открытии БД Не следует открывать таблицу в режиме DesignTime, то есть при написании программы в Delphi (ее можно временно открывать там лишь при отладке программы). В готовой программе таблица должна быть закрыта. Таблицу нужно открывать программно в работающей программе, то есть в режиме RunTime. Причем запускать программу следует не из Delphi, а при помощи ярлыка программы или в проводнике двойным щелчком на файле Biolife2. exe, то есть также, как запускаются и всякие другие программы. Наше приложение обладает одним существенным недостатком - оно способно работать лишь на том компьютере, где имеется БД с алиасом DbBiolife2. То есть если скопировать папку Biolife2 на флешку и с нее запустить программу на другом компьютере, то программа не найдет БД DbBiolife2, а следовательно, откажется работать. То есть наша программа пока полностью зависима от БД DbBiolife2. Сейчас мы сделаем программу независимой, автономной. Идея автономизации программы заключается в том, что папка db с базой данных находится в той же папке, что и программа Biolife2. exe. Следовательно, если определить папку, в которой находится эта программа, то легко определить и папку с базой данных. Составим функцию логического типа, которая возвратит true, если ей удалось найти папку БД, файл таблицы и открыть её. Не исключено также, что на компьютере может отсутствовать BDE ( Borland Database Engine ) - движок работы с БД типа Paradox. Если на компьютере установлена Delphi, то на нем установлен и BDE (он устанавливается вместе с Delphi ). Если Delphi на компьютере отсутствует, то для работы нашей программы BDE можно установить отдельно. Поэтому кроме проверки наличия БД, надо еще и проверять наличие BDE. Наличие BDE можно проверить функцией function BDEInstalled: Boolean; Текст функции TableActivate с комментариями приведен ниже function TableActivate: boolean; Далее надо решить вопрос о том, когда нужно обращаться к этой функции. Лучше всего это сделать тогда, когда после запуска программы форма Form1 становится активной. Для этого создадим для формы Form1 событие OnActivate: procedure TForm1.FormActivate(Sender: TObject); Теперь при активации формы если БД не удалось открыть, будет выдано соответствующее сообщение. Если же таблица найдена, то она без дополнительных сообщений откроется и будет готова к работе. О закрытии приложения Поскольку в начале своей работы программа открывает таблицу БД Table1, то при завершении работы программа должна эту таблицу закрыть. Следует сказать, что изменения, которые происходят с таблицей во время работы программы, находятся в оперативной памяти, то есть на диске в файле таблицы находятся старые данные, в то время как в оперативной памяти в таблице могут произойти изменения. Поэтому время от времени эти изменения следует фиксировать в файле biolifes. db. Можно это делать всякий раз, когда срабатывает событие AfterPost (после фиксации изменений) таблицы Table1, а можно и один раз, когда происходит выход из программы. Сброс данных из таблицы в файл производите методом FlushBuffers. Следовательно, перед закрытием таблицы, необходимо сбросить данные из Table1 в файл biolifes. db, иначе они будут потеряны. На этом основании можно составить программный код обработки таблицы при закрытии формы, когда срабатывает событие формы OnClose: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); Сервисные улучшения Implementation var OldGridWinProc: TWndMethod; procedure TForm1.FormCreate(Sender: TObject); procedure TForm1.NewGridWinProc(var Msg: TMessage); Отчеты в Delphi Одним из важных разделов Delphi, которые относятся к работе с базами данных, являются технологии и средства создания отчетов. Отчеты представляют собой печатные документы, получаемые в результате выполнения запросов к БД. Для упрощения работы по созданию отчетов во всех версиях Delphi имеются специализированные программные средства - генераторы отчетов. В первых версиях Delphi это был ReportSmith, затем, с Delphi 3 по Delphi 6 - QuickReport, а начиная с Delphi 7 и заканчивая Delphi 2006 - Rave Reports. ПРИМЕЧАНИЕ. В поставку Delphi 7 так же входит и QuickReport, однако по умолчанию этот инструментарий отсутствует на панели компонентов. Чтобы воспользоваться QuickReport в этой версии Delphi, следует открыть Component ' Install Packages, нажать кнопку Add и выбрать файл dclqrt70. bpl в подкаталоге … Delphi \ Bin. Генераторы ReportSmith и Rave Reports представляют собой отдельные приложения, при помощи которых можно создавать отчеты, в то время, как QuickReports - это набор VCL -компонентов, которые помещают непосредственно на стандартную форму Delphi. Другим важным средством составления отчетов является программные продукты для вывода отчетов в окно программы Microsoft Excel. Во многих случаях это наиболее предпочтительный способ автоматизации создания отчетов.
Запросы и язык SQL На практике чрезвычайно редко создают отчет по все таблице БД. Обычно требуется не все, а лишь интересующие записи, которые следует отобрать из таблицы на основе запроса, записанного на специальном языке. Для этих целей используют язык SQL ( Structured Query Language - язык структурированных запросов). При помощи команд, записанных на этом языке, выполняют запрос, результаты которого помещаются в специальный компонент Query, по виду напоминающий Table, который после создания отчета будет содержать требуемые записи. Эти записи далее могут быть выведены в отчет. Язык SQL предназначен для управления запросами данных в реляционных БД. В процессе работы с БД чаще всего используют четыре основных команд - SELECT (выбрать), INSERT (вставить), UPADTE (обновить) и DELETE (удалить). Это значит, что при помощи SQL можно не только отбирать данные, но и вносить изменения в таблицы БД. В наших упражнениях мы будем использовать SQL только для запросов на отбор записей из всей таблицы данных.
Interface uses type QR: TQuickRep; procedure bDoQueryClick(Sender: TObject); var Implementation {$R *.dfm} procedure DoRepSQL; procedure TfQueryRep.bDoQueryClick(Sender: TObject); procedure DestroyReportComponents; procedure CreateReportComponents; T[i]: = TQRDBText.Create(DetailBand); // создаем элемент данных конкретного поля с номером i procedure TfQueryRep.bCreateDynamicComponentsClick(Sender: TObject); procedure TfQueryRep.bDoReportClick(Sender: TObject); procedure TfQueryRep.bDestroyDynamicComponentsClick(Sender: TObject); procedure TfQueryRep.FormClose(Sender: TObject; var Action: TCloseAction); procedure TfQueryRep.bDoDiynamicReportClick(Sender: TObject); procedure TfQueryRep.bOutToExcelClick(Sender: TObject); end.
unit QueryRep; Interface uses type QR: TQuickRep; procedure bDoQueryClick(Sender: TObject); var Implementation {$R *.dfm} procedure DoRepSQL; procedure TfQueryRep.bDoQueryClick(Sender: TObject); procedure DestroyReportComponents; procedure CreateReportComponents; T[i]: = TQRDBText.Create(DetailBand); // создаем элемент данных конкретного поля с номером i procedure TfQueryRep.bCreateDynamicComponentsClick(Sender: TObject); procedure TfQueryRep.bDoReportClick(Sender: TObject); procedure TfQueryRep.bDestroyDynamicComponentsClick(Sender: TObject); procedure TfQueryRep.FormClose(Sender: TObject; var Action: TCloseAction); procedure TfQueryRep.bDoDiynamicReportClick(Sender: TObject); procedure TfQueryRep.bOutToExcelClick(Sender: TObject); end.
Разработка баз данных в среде программирования Delphi использованием BDE (Borland Database Engine)
Ещё одним средством разработки баз данных из множества других (Word, Excel и др.) является универсальная среда программирования Delphi. Разработка баз данных и систем управления базами данных (СУБД) - одна из основных областей использования Delphi. К достоинством этой среды следует отнести наличие практически исчерпывающего набора средств, при помощи которых могут быть решены практически любые задачи по ведению и обработке баз данных, которые далеко не всегда могут быть решены при помощи СУБД Microsoft Access. Различают локальные (персональные) и сетевые (многопользовательские, клиент-серверные) СУБД. Наиболее известными локальными СУБД являются Access, FoxPro, Paradox и DBASE, а сетевыми - DB/2, Oracle, MS SQL Server и Interbase. Основное отличие сетевых БД и СУБД состоит в том, что они могут работать с удаленными БД, в то время как локальные - только с теми, которые находятся на определенном компьютере. Среда Delphi может быть использована для создания как локальных, так и сетевых БД и СУБД. 1. Реляционные базы данных В подавляющем большинстве современные БД относятся к числу реляционных баз данных, то есть таких БД, в которых между всеми или частью таблиц установлены определенные отношения. Концепция реляционных БД разработана в начале 70-х годов прошлого компанией IBM.
Достоинствами реляционной модели проектирования БД являются простота и удобство их реализации. В настоящем учебном материале будут рассмотрены только реляционные базы данных. Рассмотрим основные средства создания и ведения баз данных в среде Delphi на конкретных примерах. 2. БД и СУБД с одной таблицей В качестве примера рассмотрим имеющуюся в среде Delphi демонстрационную БД с одной таблицей.
Рис. 1. Новое приложение в среде Delphi Для сохранения приложения нажмите кнопку Сохранить все. При сохранении заведите на каком-нибудь диске (лучше D или на " флешке" ) новую папку FishProject, затем сохраните модуль Unit1.pas под новым именем FishForm.pas и сам проект под именем Fish.dpr. Далее для формы Form1 измените значение ее свойства Caption на Fish Fact. Назначьте для ширины (Width) и высоты (Height) формы значения 600 и 480, соответственно. Положите на форму 4 панели (компонент Panel на закладке Standard ) и очистите значение их свойства Caption. Для нижней панели свойству Align назначьте значение alBottom (занять дно по всей ширине клиентской части родителя, в данном случае формы, на которой лежит эта панель). При этом форма должна принять вид, который показан на рис. 2. Рис. 2. Новое приложение в среде Delphi
Поэкспериментируйте со значениями свойств BevelInner и BevelOuter этих панелей и подберите требуемую их окантовку. Далее положите на соответствующие панели следующие компоненты:
Вид этих компонентов приведен на рис. 3. Рис. 3. Форма с компонентами на панелях Измените свойство Color компонентов DBMemo1, обеспечив требуемый цвет подложки. Свойство Caption компонента Label1 на About the. Цвет шрифта компонентов DBLabel1 и DBLabel2 обеспечивается свойством Font. Теперь привяжете компонент Table1 к базе данных и нужной нам таблице из этой БД. Щелкните на нем, затем через Инспектор объектов назначьте его свойству DataBase значение DBDEMOS (это имя демонстрационной базы данных, которая устанавливается вместе с Delphi ). Выберите для свойства TableName значение BIOLIFE (файл BIOLIFE.dbхранит таблицу базы данных по описанию рыб). Компонент DataSource1 является источником данных. Его свойство DataSet представляет собой ссылку на набор данных. В нашем случае таким набором будет таблица Table1 (установите для источника его свойство DataSet в значение Table1 ). Привяжем сетку DbGrid1 к источнику данных для отображения в ней содержимого таблицы Table1 (то есть записей из файла BIOLIFE. db ). Для этого значение свойства DataSource сетки выберите равным DataSource1. Чтобы на рисунке отображалось изображение рыбы, информация о которой содержится в текущей записи таблицы БД, компоненту DBImage1 следует назначить имя того поля таблицы, в котором хранится это изображение. Таким является поле с именем Graphic (это значение следует назначить свойству DataField компонента DBImage1 как показано на рисунке справа). Аналогичным образом назначьте свойству DataField остальных компонентов БД значения в соответствии с нижеследующей таблицей:
Далее дважды щелкните на компоненте Table1. При это откроется небольшое окошко редактирования свойств полей таблицы. Через контекстное меню выполните команду Добавить все поля. Удалите из списка ключевое поле Species No. Это будет означать что его не нужно использовать в нашем приложении. Для поля Length_In установите свойство DisplayFormat в 0.00, как показано на рисунке справа. Закройте это окошко. Для кнопки назначьте её свойству Kind значение bkClose. Это значит, что в запущенной программе при щелчке по ней произойдет закрытие формы. Поскольку других форм у нас не будет, то это приведет и к закрытию всего приложения, т. е. к выходу из программы. Кроме того, свойству Caption кнопки назначьте значение E& xit (выход). Здесь значок & указывает на то, что букву " x " при отображении надписи на кнопке, следует подчеркнуть (см. рис. 2.3). Это в свою очередь означает, что клавиша " x " будет " горячей" для закрытия формы, то есть нажатие клавиши будет дублировать щелчок на этой кнопке. Выделите компонент Table1 щелчком мыши. Измените его свойство Active на true (открыть таблицу). При этом форма примет вид, показанный на рис. 4. Рис. 4. Форма с активными компонентами Запустите приложение при помощи кнопки F9. Выберите в сетке желаемую запись (строку) и поле (столбец) мышью или клавишами вертикального движения указателя. На рис. 5 такой указатель стоит на записи со значением поля Category = " Barracuda " в клетке поля Length (cm). Рис. 5. Окно активной программы Слева вверху показано изображение этой рыбы, справа - её многострочное описание. Кроме того из таблицы видно, что средняя длина этой рыбы равно 150 см или 59, 06 дюймов (привычная для Северной Америки мера длины), которая относится в виду Sphyraena barracuda. Видно также, что надпись на компоненте Labe1 ( About the ) остается неизменной, а на компонентах DBLabel1 и DBLabel2 она меняется в зависимости от выбранной записи таблицы БД. Для данной записи значением поля Common_Name (общее название) является Great Barracuda ( огромная барракуда). Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 991; Нарушение авторского права страницы