КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Вычисляемые и связанные поляСвязанное(lookup) поле используется для визуального отображения в одной таблице значения какого-либо поля другой таблицы. Для этого должны быть определены правила, по которымкаждойзаписи исходной таблицы ставится в соответствиеодназапись другой таблицы (обычно последние таблицы называютсясправочными).Такая связь называетсяодин-к-одному(one-to-one).Для определения связи необходимо указать поля одной и второй таблицы, по которым осуществляется связь. Связываемое поле второй таблицыдолжно быть ключевым, чтобы обеспечить однозначность связи. Пусть компонент с именемtaMarksпредставляет таблицу БД Marks.db, с полями:Idтипа S* (код оценки) иNameтипа A (наименование оценки), а компонент taStudents представляет таблицу БД Students.db, имеющую поле Id_Mark(код оценки). Требуется создать полеName_Mark для taStudents, в котором отображалось бы наименование оценки, в зависимости от кода оценки в таблице Students.db. Для создания требуемого lookup поля необходимо: 1. Щелкнуть дважды по компоненту taStudents, нажать правую кнопку мыши и в появившемся коротком меню выбрать команду NewField. 2. В появившемся окне New Field (рис. 6.2) задать значения следующих реквизитов: Field properties/Name–имя нового поля,Name_Mark; Field properties/Type–тип нового поля,String; Field properties/Size–наибольшая длина строки, например, 20; Field type –выбрать значениеLookup; Lookup Definition/Key Fields–выбрать из списка полей таблицыtaStudentsполеId_Mark(данное поле используется для связи с таблицей-справочником); Рис. 6.2 Lookup Definition/DataSet–выбрать из списка таблицу taMarks (компонент Table, представляющий таблицу-справочник). Lookup Definition/Lookup Keys–выбрать из списка полей таблицыtaMarksполеId(данное поле используется для связи с исходной таблицей: связываются записи, в которых значения выбранных полей исходной таблицы и таблицы-справочника совпадают). Lookup Definition/Result Field– выбрать из списка полей таблицыtaMarksполеName. Значение поля Name таблицы БД Marks.db будет доступно для отображения через компонент taStudents. Новое поле появляется не в физической таблице БД, а только в компоненте, ее представляющем! Это поле можно удалить без изменения информации в физической таблице БД. Связь осуществляется только по значению поляId_Mark.
Вычисляемоеполе (calculated fields) позволяет использовать значения полей физической таблицы БД для вычисления значений выражений и их представления в визуальных компонентах, связанных с таблицей. Значение вычисляемого поля формируется заново каждый раз, когда изменяются значения соответствующих полей таблицы. Программный код, реализующий алгоритм формирования значения вычисляемого поля, вставляется в обработчик события OnСalcFields визуального компонента Table, представляющего таблицу.
Для создания вычисляемого поля необходимо:
1. Дважды щелкнуть по компоненту Table соответствующейтаблицы. 2. Нажать правую кнопку мыши и в появившемся меню выбрать команду New Field (рис. 6.3).
Рис. 6.3
3. Ввести наименование вычисляемого поля в строке Field properties/Name. 4. Выбрать нужный тип в строкеField properties/Type. 5. Выбрать значениеCalculatedв строкеField typeи нажать кнопку OK. 6. Вставить в событиеOnСalcFields визуального компонента Table, представляющего таблицу, программный код, определяющий значение вычисляемого поля.
Пусть, например, таблица БД Products.db содержит поля Price тип $ (цена за единицу товара) и Amount тип N (количество закупленного товара в единицах, в которых установлена цена). Требуется создать поле для вычисления стоимости всего приобретенного товара. Для этого необходимо: · ввести имя поля Sum в строку Fieldproperties/Name; · выбрать тип поля Currency в строкеField properties/Type; · выбрать значение Calculated в строке Field type; · вставить в событие OnСalcFields визуального компонента Table1 следующий программный код: Table1Sum.Value:=Table1Price.Value*Table1Amount.Value Подведем итоги. Объект класса TTableилиTQuery (см. Лекция 7) может содержать совокупность объектов класса TField. Существует три типа объектов: – объект, представляющий реальное поле физической таблицы БД, с которой связан объект TTtable, или поле, указанное в операторе SELECT запроса, связанного с объектом класса TQuery; – вычисляемое поле, представляющее значение некоторого выражения, связывающего поля таблиц или запросов с учетом их типов; – связанное поле, представляющее поле другой таблицы или запроса.
|