502 Глава 9

После этого можно устанавливать значение свойства TableName. В выпадаю-
щем списке этого свойства перечислены таблицы, доступные в данной базе дан-
ных. Выберите таблицу Pers.

А теперь наступает самый ответственный момент. Вы можете прямо в процес-
се проектирования соединиться с базой данных. Соединение осуществляется свой-
ством Active. По умолчанию оно равно false. Установите его в true. Если все сдела-
но вами правильно, то вы увидите в поле компонента DBGridI данные из таблицы
(рис. 9.25) и сможете просмотреть их.

Рис. 9.25

Форма простого приложения после соединения
компонента Table с базой данных

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

Хороший стиль программирования

В законченном приложении во всех таблицах сначала должно быть установлено Acti-
ve = false, затем при событии формы OnCreate эти свойства могут быть установлены s
true, а при событии формы OnDestroy эти свойства опять должны быть установлены в fal-
se. Это исключит неоправданное поддержание связи с базой данных, которое занимает ре-
сурсы, а при работе в сети мешает доступу к базе данных других пользователей.

Вы можете прямо сейчас, хотя приложение еще не закончено, сохранить про-
ект, запустить его на выполнение и убедиться, что с ним можно работать. Вы мо-
жете просматривать данные, редактировать их (редактированные данные будут
помещаться в базу данных в момент перехода от редактируемой записи к любой
другой). Вы можете также убедиться, что в таблице Pers базы данных dbP невоз-
можно изменить поле Num, поскольку оно автоматически изменяется и доступно
только для чтения (см. раздел 9.2.2). Вы увидите также, что нельзя задать произ-
вольное имя подразделения Dep, поскольку имеется таблица просмотра Вер, зада-
на целостность на уровне ссылок и допустимы только те значения Dep, которые
имеются в головной таблице Dep (см. разделы 9.2.3.2 и 9.2.3.4).

При попытке делать подобные неразрешенные исправления соответствующие
сообщения об ошибках будут появляться не в момент редактирования, а после ре-
дактирования при попытке перейти к следующей записи, поскольку именно в этот
момент отредактированная запись должна заноситься в таблицу. Правда, если вы
хотите проверять все эти возможности, то надо бы отключить остановы при генера-
ции исключений (см. раздел 2.5.8 главы 2). Вспомним, что для этого надо выпол-
нить команду Tools | Debugger Options, в открывшемся диалоговом окне выбрать
страницу Language Exceptions и выключить опции Stop on Delphi Exceptions и Stop On
C++ Exceptions.

Разрешить пользователю так просто, как в созданном вами приложении, ре-
дактировать данные в таблице в большинстве случаев недопустимо. Слишком ве-
лика вероятность, что без соответствующей проверки вводимых данных будут сде-
ланы ошибки. Предотвратить редактирование данных вы можете, установив свой-
ство Readonly компонента DBGridI в true. Другой способ сделать то же самое —