![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Порядок связывания таблиц [D6, IB6.x]
ruslan_as © (2002-11-25 17:34:00)Есть таблица ТОВАР
есть еще две таблицы МЕХАНИК и ЭНЕРГЕТИК
Таблица ТОВАР мастер (по двум полям) к МЕХАНИК и ЭНЕРГЕТИК.
В третьей таблице ОБЩАЯ (тоже связанная с ТОВАР по этим же полям) я хочу получить сумму по полям МЕХАНИК и ЭНЕРГЕТИК.
Выкручиваюсь так:
Поставил процедуру на onCalcFields таблицы ОБЩАЯ типа:
ОБЩАЯ.ПОЛЕ1:=МЕХАНИК.ПОЛЕ1+ЭНРЕГЕТИК.ПОЛЕ1
В результате при переходе к следующую запись таблицы ТОВАР я получаю в ОБЩЕЙ сумму предыдущих значений МЕХАНИК и ЭНЕРГЕТИК (на которых перед этим был установлен курсор).
Получаестся, что CalcFields просчитывает раньше, чем поменяют свои значения МЕХАНИК и ЭНЕРГЕТИК. Как сделать, что бы считались уже измененные значения...
Johnmen (2002-11-25 18:17:00) [1]Кажись, я понял...
Вычисляемые поля, в общем случае, вычисляются из значимых в рамках текущего НД, т.е. и выч-ые и зна-ые берутся из одного НД.
А ты берешь из другого, в котором нет движения...
ruslan_as (2002-11-25 18:09:00) [2]Речь идет о наборах данных. Поля отображаються в DBGrid. Запроса на таблицу ОБЩАЯ нет.
Я уже раньше делал это, но сейчас создавал эти наборы в другом порядке, может тут собака зарыта...
Johnmen (2002-11-25 17:41:00) [3]Нет ! Значения вычисляемых поля получаются после занесения значимых полей в буфер текущей записи, т.е. все должно быть ок...
Но лучше сделать в запросе МЕХАНИК.ПОЛЕ1||ЭНРЕГЕТИК.ПОЛЕ1 AS <Field>