Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л_8_9_БД.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
350.21 Кб
Скачать

7. Основные свойства компонента Table и простейшие приложения на его основе

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

В качестве набора данных используем компонент 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.