Вниз
Скачать: CL | DM;

Как быстрее вычислить поле?   Найти похожие ветки 

← →
Котяра ©   (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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
1-10184
race1
2003-07-22 14:52
2003.08.04
прозрачность TGraphicControl а


1-10168
qwerty
2003-07-22 21:24
2003.08.04
File


14-10422
ruslan_as
2003-07-17 17:55
2003.08.04
Как уравнять значения DBLookupComboBox1 и DBLookupComboBox2


4-10489
Brand2000
2003-05-29 01:46
2003.08.04
Загрузка моей программы перед загрузкой Explorer a


4-10510
blackgrin
2003-05-31 21:01
2003.08.04
Управление другим приложением, запущеным на этой-же машине




   Наверх