Показать сообщение отдельно
Старый 18.09.2009, 10:26   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1235 (44) ++++++++
Регистрация: 11.04.2008
0. Тему бы раздел "Программирование"
1. Какой SQL используете?
2. Посмотреть бы ещё на кверю GroupFinancLedgerJournalTrans, возможно туда можно подцепить JournalNum, тогда от одного цикла можно было бы избавиться - это самый злой момент.
X++:
(while select RecId, budget, JournalNum, Voucher, AccountNum, AmountCurCredit from ledgerTrans
            where ledgerTrans.RecId        == qLedgerTrans.RecId
         join JournalNum, Posted, JournalType from ledgerTable
            index hint PostedJournalNumIdx
            where ledgerTable.JournalNum    == ledgerTrans.JournalNum   &&
                  ledgerTable.Posted        == NoYes::Yes)
А так, что можно попробовать безболезненно:
3. "join ... from ledgerTable" заменить на "exists join ... from ledgerTable"
4. Заменить индекс OffsetVoucherIdx на TransIndex
X++:
while select OffsetTransVoucher, AccountNum, OffsetRecid, TransRecId, SettleAmountCur from custSettlement
                    index hint TransIndex //orig:  index hint OffsetVoucherIdx
                    //where custSettlement.OffsetTransVoucher == ledgerTrans.Voucher      &&
                    //      custSettlement.AccountNum         == ledgerTrans.AccountNum   &&
                    where custSettlement.TransRecId    == custTrans.RecId      &&
                          custSettlement.AccountNum    == custTrans.AccountNum &&
                          custSettlement.CanBeReversed == NoYes::Yes
За это сообщение автора поблагодарили: Alexanderrrr (1).