TDBRadioGroup (Группа переключателей данных) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

TDBRadioGroup (Группа переключателей данных)



Этот компонент позволяет выводить ограниченный набор значений полей в наглядном виде. Каждому значении) можно поставить в соответствие один из переключателей группы.

Список названий переключателей заносится в свойство Items (тип TStrings). Список соответствующих им значений поля хранится в свойстве Values (тип TStrings).

Например, значениям 5,7 и 10 для поля Payability можно поставить в соответствие

три переключателя группы: средне, хорошо и отлично.

with DBRadioGroupl do

begin

Items. Add (' средне '),-

Items. Add (' хорошо '),-

Items.Add('отлично1),-'

Values.Add(' 5 '),-

Values.Add(' 7 '),-

Values.Add('10');

end;

Доступ к текущему значению поля, связанного с компонентом, можно получить

через свойство Value.

 

ТDВ Rich Edit (Поле форматирования)

Компонент наследует все свойства компонента TRichEdit и позволяет пред-

ставлять содержимое двоичных полей Blob из базы данных как форматиро-

ванный текст.

Компонент используется так же, как и компонент TDBMemo.

TDBCtrlGrid (Свободная форма)

Компонент напоминает таблицу записей (TDBGrid), но позволяет представлять данные не в жестко заданном табличном виде, а с помощью выбранного набора компонентов с панели Data Controls (Элементы управления данными) и в произвольном виде. Например, можно задать число столбцов в свободной форме. Когда компонент помещается на форму, он представляется в виде набора больших панелей, первая из которых пуста, а остальные заштрихованы и приведены только для наглядности. На первой панели надо разместить компоненты, предназначенные для отображения конкретных полей записи, и связать их через свойство DataField с соответствующим полем набора данных. Само имя набора заносится в свойство DataSource автоматически. Оно совпадает со значением аналогичного свойства родительского компонента TDBCtrlGrid.

ВНИМАНИЕ:В число размещаемых компонентов не могут входить такие компоненты, как TDBGrid, TDBNavigolor, TDBListBox, TDBRadioGroup, TD В Look up List, TDBRichEdi1,тo есть все, представляющие несколько значений поля.

 

TDBChart (Диаграмма данных)

Ранее мы рассматривали компонент TChart, позволяющий строить всевозможные графики и диаграммы на основе данных, вводимых пользователем или генерируемых программно.

Компонент TDBChart, являющийся наследником компонента TChart, предназначен для отображения в подобном виде информации, получаемой из базы данных. Он настраивается так же, как компонент TChart, но в качестве источника данных для него указывается таблица или запрос. Допустим, на форме имеется запрос Query1, структура записи в котором состоит из

трех полей: двух числовых PI, P2 и текстового РЗ. Третье значение может быть привязано к первой паре и через ключевое поле. Оно может описывать характеристики текущей записи, например указывать, к какому опыту относится текущая пара значений. Добавим на форму компонент TDBChart (рис. 5.21) и определим ряд данных.

Далее на вкладке Data Source (Источник данных) выбираются:

О в раскрывающемся списке — значение DataSet (Набор данных);

О в списке Dataset (Набор данных) — имя запроса Queryl;

О в поле Labels (Подписи) — имя поля РЗ;

О в поле X — имя поля Р1, значения из которого будут откладываться по оси X;

О в поле Y — имя ноля Р2, значения из которого будут откладываться по оси 7.

Свойства компонентов DBText, DBEdit и DBMеmо

Name - Имя компонента. Используется для доступа к свойствам компонента

DataSource - Компонент-источник данных

DataField - Поле базы данных, для отображения или редактирования которого используется компонент

Добавить компоненты Tаblе и Datasource и установить значения их свойств (в предыдущем вопросе описаны свойства)

Для того чтобы иметь возможность просматривать другие записи файла данных, в форму приложения нужно добавить компонент DBNavigator(в предыдущем вопросе описаны свойства)

 

59. Работа с базами данных в Delphi. Отношение master-detail между таблицами. Описание отношений master-detail средствами визуального программирования.

При отношении 'Master-Detail' (главный-подчиненный) между таблицами одна из них объявляется главной (Master), вторая – подчиненной (зависимой, Detail); связь таблиц осуществляется по полю с одинаковым именем, входящему в состав обоих таблиц.

 

Типичным примером является связь между списком заказчиком (таблица CUSTOMER.DB) и заказов (ORDERS.DB). Каждая из таблиц имеет (числовое) поле CustNo, однозначно идентифицирующее заказчика (для таблицы заказчиков - уникальное). Конечная цель проекта – получение информации о заказах (из таблицы ORDERS.DB), сделанных конкретным заказчиком (соответствующим выбранной записи в таблице CUSTOMER.DB). Естественно, у некоторых заказчиков может не быть заказов вообще, у некоторых – много заказов; при попытке удаления заказчика с ненулевым количеством заказов возникает ситуация нарушения ссылочной целостности. Добавление заказа должно предваряться дополнением списка заказчиков (если информация о данном заказчике отсутствует).

На форму помещаются по два компонента типа TDBGrid, TTable и TDataSource, для навигации по (главной) таблице служит TDBNavigator. Настройки компонентов приведе-

ны в таблице

Дополнительно в свойстве MasterSource компонента Table2 (Detail-таблица) установить значение DataSource1 (т.е. фактически дать ссылку на соответствующий компонент, связанный с Master-таблицей).

Путем щелчка мыши на кнопке... свойства Master Fields компонента Table2 вызвать окно Field Link Designer (окно инструмента для установления связи таблиц по одноименным полям), в выпадающем списке Available Indexes выбрать CustNo (имя поля, по которому будет осуществлено связывание). Выбрать (щелчком левой кнопки мыши) в левом списке Detail Fields и в правом списке Master Fields имен связываемого поля CustNo, нажатием кнопки Add подтвердить выбор этого поля и проконтролировать внесение строки CustNo → CustNo в список Joined Fields (рис.11). Напомним, что возможен просмотр данных из таблиц в DesignTime при установке значений свойства Active компонентов TTable в True.

Таблица Настройки свойств компонентов VCL

при создании приложения ‘Master-Detail’.

Тип Настраиваемое свойство Значение настраиваемого

компонента (Property) свойства

DBGrid1 DataSource DataSource1

DBGrid2 DataSource DataSource2

DataSource1 DataSet Table1

DataSource2 DataSet Table2

Table1 DatabaseName BCDEMOS (*)

TableName CUSTOMER.DB

IndexFieldName CustNo (*)

Table2 DatabaseName BCDEMOS (*)

TableName ORDERS.DB

IndexFieldName CustNo (*) или пусто

(*) - возможность выбора из ниспадающего списка

Функциональность приложения достигается тем, что каждой (соответствующей определенному значению поля CustNo) записи о заказчиках таблицы CUSTOMER соответствует запись (записи) о заказах (таблица ORDERS) с тем же значением CustNo. Дополнительная ссылочная целостность БД (каскадное изменение или удаление записей главной таблицы и др.) должна быть реализована дополнительно (программными средствами).

Программно можно так задать все свойства:

Установить свойство Table2.MasterSource: = DataSource1

Установить свойство Table2.MasterField:= ‘CustNo’

Установить свойство Table2.IndexName:= ‘CustNo’

(что означают все эти свойства):

Свойство MasterSource в Table2 определяет DataSource от которого Table2 может получить информацию. То есть, оно позволяет таблице ORDERS знать, какая запись в настоящее время является текущей в таблице CUSTOMERS.

Но тогда возникает вопрос: Какая еще информация нужна Table2 для того, чтобы должным образом отфильтровать содержимое таблицы ORDERS? Ответ состоит из двух частей:

  • Требуется имя поля по которому связанны две таблицы.
  • Требуется индекс по этому полю в таблице ORDERS (в таблице ‘многих записей’), которая будет связываться с таблицей CUSTOMER(таблице в которой выбирается ‘одна запись’).

 

Чтобы правильно воспользоваться информацией описанной здесь, Вы должны сначала проверить, что таблица ORDERS имеет нужные индексы. Если этот индекс первичный, тогда не нужно дополнительно указывать его в поле IndexName, и поэтому Вы можете оставить это поле незаполненным в таблице TTable2 (ORDERS). Однако, если таблица связана с другой через вторичный индекс, то Вы должны явно определять этот индекс в поле IndexName связанной таблицы.

 

В примере показанном здесь таблица ORDERS не имеет первичного индекса по полю CustNo, так что Вы должны явно задать в свойстве IndexName индекс CustNo.

 

Недостаточно, однако, просто yпомянуть имя индекса, который Вы хотите использовать. Некоторые индексы могут содержать несколько полей, так что Вы должны явно задать имя поля, по которому Вы хотите связать две таблицы. Вы должны ввести имя ‘CustNo’ в свойство Table2.MasterFields. Если Вы хотите связать две таблицы больше чем по одному полю, Вы должны внести в список все поля, помещая символ ‘|’ между каждым:

 

Table1.MasterFields:= ‘CustNo | SaleData | ShipDate’;

 

В данном конкретном случае, выражение, показанное здесь, не имеет смысла, так как хотя поля SaleData и ShipDate также индексированы, но не дублируются в таблице CUSTOMER. Поэтому Вы должны ввести только поле CustNo в свойстве MasterFields.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 266; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.86.56 (0.01 с.)