Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизКак быстрее вычислить поле? Найти похожие ветки
← →
Котяра (2003-07-14 19:26) [0]Доброго времени суток, уважаемые мастера!
Ситуация такова: есть три таблицы
1) D_TYPES (ID,OWNER_ID,NAME...) - дерево групп техники
2) D_DEVICES (ID, D_TYPES_ID, NAME, TNAME_SHOW (логическое поле)...) - справочник техники.
3) EQ_LIST - (ID, D_DEVICES_ID, ....). - Перечень (основная база) техники.
Требуется в таблице EQ_LIST иметь полное наименование из справочника В_DEVICES по полю D_DEVICES_ID. Но! Это наименование скаладывается по принципу: Если поле TNAME_SHOW = 1 то FULL_NAME = D_TYPES.NAME + " " + В_DEVICES.NAME, если 0, то FULL_NAME = В_DEVICES.NAME. Вопрос: как быстрее обработать это дело в OnCalcFields.
1 способ. В таблице D_DEVICES созается lookup поле D_TYPES_NAME, вычисляемое поле FULL_NAME, вычисление производится в OnCalcFields таблицы D_DEVICES. В основной базе наименования отображаются как lookup из этого вычисленного поля D_DEVICES.
2 способ. В таблице D_DEVICES созается lookup поле D_TYPES_NAME, в таблице EQ_LIST - lookup поля D_DEVICES_NAME, D_TYPES_NAME; вычисляемое поле FULL_NAME, вычисление производится в OnCalcFields таблицы EQ_LIST.
Какой из этих способов будет работать быстрее? Или может быть есть еще способы? Заранее спасибо за помощь!
Разживин Александр aka Котяра.
← →
MsGuns (2003-07-14 20:19) [1]А вот есть 3-й способ:
В запросе выводятся оба поля. Например, как FULLN1 и FULLN2.
В контрол (колонку грида) помещается поле FULLN1, на который вешаем обработчик OnGetText:
if TimeShow then Text := FieldByName(FULLN1).AsString
else Text := FieldByName(FULLN2).AsString
ИМХО, это будет работать быстрее. Хотя бы потому, что возникать это событие будет куда реже, чем OnCalcFields
← →
Котяра (2003-07-14 21:45) [2]Хорошая идея! Спасибо :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c