КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Просмотр и редактирование данных
Последний этап создания справочника — реализация режима просмотра главной таблицы Games. Использовать для этого компонент TDBGrid пока не удастся. Ведь в этом случае будут отображаться столбцы GenrelD и ArticlelD с числовыми значениями ключей, а пользователь должен видеть соответствующие значения из таблиц Genres, Articles и других. Реализовать подобные требования можно с помощью так называемых полей соответствия (Lookupfielek), которые создаются в редакторе полей (Fields editor) для физической таблицы Games. Они имитируют реальные поля, выполняя подстановку значений полей из других таблиц, соответствующих имеющимся ключевым значениям. Для таблиц определен еще один способ доступа к полю: по его имени с помощью метода FieldByName: function FieldByName(const FieldName: string): TField; Например, вместо оператора DataModule2.Games.Fields[l] .AsString := Editl. Text ; записывающего данные в поле таблицы Games с индексом 1, можно использовать метод доступа к полю по его названию Name. DataModule2.Games.FieldByName('Name1).AsString :=Editl.Text; Оба способа имеют преимущества и недостатки. В первом случае надо постоянно следить за порядком полей в таблице, во втором — приходится вручную изменять названия полей в программе, если они были изменены в базе данных. Рассмотрим использование полей соответствия на примере связи с таблицей Genres. Добавим с помощью редактора полей в таблицу Games новое поле GenreName. Оно должно размещаться в конце списка, чтобы не влиять на порядок ранее определенных полей, доступ к которым происходит по индексам.
Новое поле добавляется в редакторе командой New Field (Создать поле) из контекстного меню. В появившемся диалоговом окне в текстовых полях указываются следующие значения. · В поле Name (Имя) - имя нового поля (GenreName). · В поле Туре (Тип) — тип подставляемого поля (String, текстовое). · На панели Field type (Тип поля) включите переключатель Lookup (Поле соответствия). Когда этот переключатель включен, активизируются раскрывающиеся списки на панели Lookup definition (Определение поля соответствия).
· В раскрывающемся списке KeyFields (Ключевые поля) указывается поле GenrelD, связывающее таблицы между собой.
· В раскрывающемся списке Dataset (Связываемый набор данных) выбирается таблица Genres.
· В раскрывающемся списке Lookup Keys (Поля соответствия) указывается поле ID таблицы Genres, связанное с полем GenrelD текущей таблицы Games.
· В раскрывающемся списке Result Field (Поле результата) указывается поле GenreName таблицы Genres, подставляемое вместо поля GenrelD таблицы Games
Аналогичным образом надо добавить поля PubName и DevName, которые связывают текущую таблицу Games по ключевым полям Publisher и Developer с таблицей Firms по ее полю соответствия ID. Результирующим будет поле FirmName.
Теперь на основе всех полей таблицы Games можно создавать объект просмотра. На главной форме Forml разместим компонент TDBGrid. В качестве источника данных укажем набор DataModule2.SourceGames, после чего с помощью редактора столбцов определим список столбцов.
Из этого списка удалены поля, хранящие числовые значения ключей других таблиц, но оставлены поля соответствия. Добавив Навигатор (компонент ТDВ Navigator),мы получим возможность быстрого перемещения по таблице, редактирования ранее введенных значений и их удаления. Обратите внимание на работу полей соответствия. Если выделить такое поле, то в его правой части появится кнопка со стрелкой. Щелкнув на ней, мы получим список всех значений, связанных с данным полем. Новые значения можно выбирать из этого списка. Например, таким способом легко указать другую фирму-издателя или фирму-производителя. При этом, что очень важно, автоматически произойдет изменение связанного ключевого поля Publisher или Developer, которое получает новое значение, соответствующее значению ключа для выбранного названия фирмы.
|