20.07.2009, 16:38 | #1 |
Участник
|
Как отработает запрос?
Здравствуйте, подскажите пожалуйста, как отработает запрос:
X++: while select forupdate custVendSettlement where custVendSettlement.TransDate > postingDate && custVendSettlement.SettleAmountCur && custVendSettlement.CanBeReversed join custVendTrans where custVendTrans.RecId == custVendSettlement.TransRecId && custVendTrans.TransDate <= postingDate { // custVendTransReg.reread(); select forupdate custVendTransReg where custVendTransReg.RecId == custVendTrans.RecId && custVendTransReg.TableId == custVendTrans.TableId; custVendTransReg.LastExchAdj = postingDate; custVendTransReg.update(); } |
|
20.07.2009, 19:14 | #2 |
MCITP
|
Цитата:
Сообщение от VORP
Здравствуйте, подскажите пожалуйста, как отработает запрос:
X++: while select forupdate custVendSettlement where custVendSettlement.TransDate > postingDate && custVendSettlement.SettleAmountCur && custVendSettlement.CanBeReversed join custVendTrans where custVendTrans.RecId == custVendSettlement.TransRecId && custVendTrans.TransDate <= postingDate { // custVendTransReg.reread(); select forupdate custVendTransReg where custVendTransReg.RecId == custVendTrans.RecId && custVendTransReg.TableId == custVendTrans.TableId; custVendTransReg.LastExchAdj = postingDate; custVendTransReg.update(); } Да и зачем 2 раза апдэйтить одну и ту же строчку? перепишите тогда уже запрос с группировкой или с exists join для custVendSettlement...
__________________
Zhirenkov Vitaly |
|
21.07.2009, 10:55 | #3 |
Участник
|
Да извиняюсь, там должен был быть не CustvendTransReg.reread() а custVendTrans.reread().
То есть перечитывается custVendTrans, причём иногда. Код из custVendExchAdjTrans.update() и exchAdjustSettlement(). Переделал на вложенные циклы, в первом custVendTrans и exists join на CustVendSettlement, во втором просто custVendSettlement. Теперь больше перечитываться вроде не должен. Спасибо большое! |
|