Показать сообщение отдельно
Старый 21.07.2010, 13:21   #13  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Silphidae Посмотреть сообщение
Но проблема в том, что однозначной связи между CustTrans и LedgerTrans нет.
Однозначной нет. Но это не значит что ее вообще нет.

X++:
while select custTrans 
where custTrans.AccountNum == "2545" 
//   && custTrans.PostingProfile == "76.20"  
        && custTrans.TransDate <= 30\06\2010
{
     select firstonly ledgerTrans
          where ledgerTrans.AccountNum == "76.20.00"
              && ledgerTrans.Voucher == custTrans.Voucher
              && ledgerTrans.TransDate == custTrans.TransDate ;
     if(ledgerTrans.recId) // Это условие лишнее - запись есть всегда
          saldo += custTrans.AmountMST;
}
Можно это переписать сразу в джойн. Только убедитесь что у Вас разным хоз операциям соответствуют разные значения поля Voucher.
Например, так:
X++:
select sum(AmountMST) from custTrans 
where custTrans.AccountNum == "2545" 
        && custTrans.TransDate <= 30\06\2010
exists join ledgerTrans
      where ledgerTrans.AccountNum == "76.20.00" &&
               ledgerTrans.Voucher == custTrans.Voucher &&
               ledgerTrans.TransDate == custTrans.TransDate;
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 21.07.2010 в 13:24.
За это сообщение автора поблагодарили: Silphidae (1).