Установка связей между компонентами и базой данных, навигация по таблице

В качестве набора данных используем компонент Table. Источником данных будет компонент DataSource. Это невизуальные компоненты.

В качестве компонента визуализации: DBGrid, в котором будут отображаться данные.

Установим цепочку связей между этими компонентами в соответствии со схемой взаимодействия компонентов с базой данных:

Связь между визуальным компонентом и источником данных: свойству DataSourceу компонента DBGrid1 в инспекторе объектов присвоить значение из выпадающего списка DataSource1.

Связь между источником данных и набором данных: свойству DataSet у компонента DataSource1 в инспекторе объектов присвоить значение из выпадающего списка Table1.

Связь между набором данных и необходимой таблицей базы данных: для этого предназначены два свойства компонента Table – DatabaseName и TableName. В выпадающем списке свойства DatabaseName показываются все доступные BDE псевдонимы баз данных. Выбрать ранее созданный псевдоним dbP(рис.). После этого в выпадающем списке свойства TableName появятся таблицы, доступные в данной базе данных. Выберите таблицу Pers.

 

Можно связаться с таблицей в процессе проектирования, если установить свойство таблицы Table1 Active в true.

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

Заранее выставлять для таблиц Active = true допустимо только в процессе настройки и отладки приложения, работающего с локальными базами данных.

В законченном приложении во всех таблицах сначала должно быть установлено Active = false, затем при событии формы onCreate эти свойства могут быть установлены в true, а при событии формы onDestroy эти свойства опять должны быть установлены в false. Это исключит неоправданное поддержание связи с базой данных, которое занимает ресурсы, а при работе в сети мешает доступу к базе данных других пользователей.

Некоторые свойства компонента DBGrid: ReadOnly – запрещение редактирования данных, тот же эффект дает для свойства Options – dgEditing=false.

У компонента Table есть булево свойство Exclusive – определяет доступ к используемой таблице при одновременном обращении к ней нескольких приложений (например, при работе в сети или в многозадачном режиме). Exclusive=true – таблица будет закрыта для других приложений, это свойство можно менять только при Active=false.

Рассмотрим еще один компонент, управляющий работой с таблицей – навигатор DBNavigator (со страницы Data Control). DBNavigator имеет кнопки для управления данными:

nbFirst - перемещение к первой записи

nbPrior - перемещение к предыдущей записи

nbNext - перемещение к следующей записи

nbLast - перемещение к последней записи

nbInsert - вставить новую запись перед текущей

nbDelete - удалить текущую запись

nbEdit - редактировать текущую запись

nbPost - послать отредактированную информацию в базу данных

nbCancel - отменить результаты редактирования или добавления новой записи

bnRefresh - очистить буфер, связанный с набором данных

DBNavigator имеет свойство VisibleButtons, пользуясь которым можно убрать любые ненужные в данном приложении кнопки. Если нужно запретить пользователю вводить новые записи – nbInsert=false. Если нужно запретить редактирование – оставить только кнопки – nbFirst, nbPrior, nbNext, nbLast.

DBNavigator связывается с источником данных также через свойство DataSource. При работе с DBNavigator внесенные изменения зафиксируются в таблице после нажатия кнопки nbPost.

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

У компонента Table есть свойства IndexName и IndexFieldName.

Свойство IndexNameсодержит выпадающий список индексов, созданных для таблицы. Если выбрать индекс FIO, записи будут представленными упорядоченными по алфавиту. Индекс depfio упорядочивает по подразделениям, а внутри подразделения по алфавиту. В свойстве IndexFieldName просто перечислены предусмотренные в индексах комбинации полей, если вы забыли. что обозначают имена индексов.

 

Для редактирования отдельных полей имеется Редактор Полей, вызывается двойным щелчком на компоненте Table.

Каждое поле – это объект, свойства которого отображаются в Инспекторе объектов. Класс поля зависит от типа поле: TStringField, TSmallIntField, TBooleanField и т.п. Эти классы являются производными от класса TField – базового класса полей.

Некоторые основные свойства полей:

Alignment –выравнивание отображаемого текста внутри колонки: влево, вправо, по центру

DisplayLabel –заголовок столбца данного поля

DisplayWidth –ширина колонки – число символов

EditMask, EditFormat –форматы отображения данных

DisplayValue –для логических полей: какие значения должны отображаться, если поле имеет значение true или false.

ReadOnly –при значании true запрещает вводить данные в поле

Visible –при значении false делает поле невидимым

 

 

Вид приложения после установки всех необходимых свойств: