2017-02-23 103 views
0

Я хочу обновить несколько SalesQuotationLines матч Котировка Id X.обновление нескольких записей в одной таблице

salesQuotationLine = salesQuotationLine::find(quotationId,true); 

salesQuotationLine.selectForUpdate(true); 

if(salesQuotationLine) { 

ttsBegin; 

SalesQuotationLine.Field = newFieldValue; 
salesQuotationLine.update(); 

ttscommit; 

Проблема заключается в том, это только обновление первой записи, которая найдена в методе find.

Как я могу убедиться, что все записи, соответствующие запросу QuotationID, обновляются?

ответ

2

вы можете использовать этот код:

while select forupdate salesQuotationLine 
where salesQuotationLine.quotationId == quotationId 
{ 
    salesQuotationLine..Field = newFieldValue; 
    ttsbegin; 
    salesQuotationLine.update(); 
    ttscommit; 
} 

Или можно использовать _update_recordset_

ttsbegin; 
update_recordset salesQuotationLine 
setting 
Field = newFieldValue 
where salesQuotationLine.quotationId == quotationId 
ttscommit; 

я надеюсь привитое растение вопрос.

0

Dynanics AX 2012 предоставляет возможность использования операторов X ++ SQL для повышения производительности. Этот параметр равен update_recordset, который позволяет вам обновлять несколько строк за один раз на сервере:

update_recordset salesQuotationLine 
setting 
    Field = newFieldValue 
where salesQuotationLine.quotationId == quotationId;