Так эти условия и соответствующие вычисления сделаны в таблице Позиции счета (то есть подчиненной таблице). Разве можно задать условие вычисления в основную таблицу при изменении полей в подчиненной таблице? И где это сделать? Кстати у Вас в демобазе этого условия не указано (но при этом работает так как написано ниже).
А меня интересует автоматическое вычисление суммы из подчиненной таблицы в саму таблицу Счета - причем сразу - как это реализовано у Вас в демобазе.
Сделано следующее (я на примере названий полей из Демобазы)
Таблица Счета, Есть подчиненная таблица Позиции счета.
В подчиненной таблице "Позиции счета" есть вычисления которые делаются при изменении полей количество и цена - идет вычисление в поле Сумма (таблицы Позиции счета) - это работает - здесь вопросов нет.
В основной таблице (Счета) при этом считается общая сумма по полю Сумма из таблицы Позиции счета.
Вопрос вот в чем: в Демобазе я смотрю счет и вижу внизу подтаблицу Позиции счета. Я могу изменить количество или цену (в позициях счета), и автоматически пересчитается сумма и в подчиненной таблице и в Счете (они даже моргают таким желтеньким цветом при пересчете).
А у меня такое не работает - чтобы у меня на экране появились уже обновленные значения в самом счете мне приходится обновить окно браузера. То есть вычисление работает и записывается, но в основной таблице отобразятся только если обновить окно.
Дело в том, что у меня 3 поля в таблице Счета (основная) так вычисляются (то есть сделаны 3 вычисления) - и вычисления идут при условии Отображение поля. В документации написано что это нагружает систему - может быть из-за этого у меня не так как у Вас?
Добавлено:
похоже нашел
я туплю - вечером проверю отпишусь
у вас вычисления в подчиненной таблице
$line['Сумма'] = $line['Кол-во'] * $line['Цена'];
$sqlQuery = "SELECT SUM(`f812`) AS `bill_amount` FROM `".DATA_TABLE."74` WHERE `status`<>'2' AND `f807`='".$line['Счет']['raw']."' AND `id`<>'$ID'";
$result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);
if ($row['bill_amount'] == NULL) $bill_amount = $line['Сумма'];
else $bill_amount = $row['bill_amount'] + $line['Сумма'];
$line['Счет']['Сумма с НДС'] = $bill_amount;
$line['Счет']['Сумма'] = $bill_amount;
а у меня только
line['Сумма'] = $line['Кол-во'] * $line['Цена'];
Сообщение отредактировал UmaCat: 05 Сентябрь 2012 - 08:30