Показать сообщение отдельно
Старый 27.04.2005, 18:11   #4  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Посмотрите как работают display-методы на источниках данных в форме Главная книга-Запросы-Оборот по счету-Оборотно-сальдовая ведомость. В частности, методы getBegCreditBalance() и ему подобные на источнике данных LedgerTable.
Там значения для расчетных полей берутся из map'а - таким способом обеспечивается кеширование.

А сам расчет может быть сколь угодно сложным и не зависеть от конкретного DataSource формы. То есть, курсор передавать надо, но в расчете он может участвовать только для фильтрации данных в сложных запросах, например
PHP код:
display InventQtyAvailPhysical availhysical(InventSum _inventSum)
{
    
InventSum inventSum;
    ;
    if (!
myMap.exists(_inventSum.ItemId)
    {
        
select sum(AvailPhysicalfrom inventSum where inventSum.ItemId _inventSum.itemId);
         
myMap.insert(inventSum.ItemIdinventSum.AvailPhysical());
    }

    return 
myMap.lookup(_inventSum.ItemId);


PS: Это абстрактный пример.