14.03.2007, 09:58 | #1 |
Участник
|
корректность написанного кода
Подскажите , как правильней оформить следующий validateWrite на ДС SalesLine на SalesTable? Как лучше сделать salesLine.doUpdate(), что-то ума не приложу....?
case 1: { salesLine.SalesPrice = Currency::curAmount2CurAmount(checkSalesLinePrice.price(), CompanyInfo::standardCurrency(), salesLine.CurrencyCode, salesTable.createdDate); salesLine.LineAmount = salesLine.calcLineAmountForced(salesLine.SalesQty) ; if (salesLine.RecId) salesLine.doUpdate(); break; } Последний раз редактировалось fialka; 14.03.2007 в 10:02. Причина: ошибка |
|
14.03.2007, 10:05 | #2 |
Программатор
|
Я вопроса не понял.... Вас интересует оформление кода или что?
|
|
14.03.2007, 10:10 | #3 |
Участник
|
|
|
14.03.2007, 10:14 | #4 |
Участник
|
X++: case 1: // а что это за литерал? почему не 3.145928? { // а фигурные скобки зачем? salesLine.SalesPrice = Currency::curAmount2CurAmount(checkSalesLinePrice.price(), CompanyInfo::standardCurrency(), salesLine.CurrencyCode, salesTable.createdDate); // Есть \Data Dictionary\Tables\Currency\Methods\curAmount // и \Data Dictionary\Tables\Currency\Methods\curPrice // вероятно в вашем случае уместен последний или надо переводить Amount а не price salesLine.LineAmount = salesLine.calcLineAmountForced(salesLine.SalesQty) ; if (salesLine.RecId) salesLine.doUpdate(); break; } |
|
14.03.2007, 10:18 | #5 |
Участник
|
Цитата:
salesLine.doupdate или salesLine_ds.refresh
doUpdate это наоборот а еще есть UPDATE_RECORDSET но в вашем случае он приведет к update. Так что с этой точки зрения doUpdate наиболее быстрое решение (если вы хотите именно его) |
|
|
За это сообщение автора поблагодарили: fialka (1). |
14.03.2007, 10:19 | #6 |
Участник
|
А почему этот код у Вас на методе validateWrite?
Как-то не совсем верно в плане подхода. В этом методе должны быть проверки введенных значений, а не обновление полей и записи. А сравнивать doUpdate и refresh - не совсем корректно. Возможно именно в этом случае визуально вы получается один и тот же результат. Но методы выполняют совершенно разные действия. Что я считаю следует сделать: 1. Перенести этот код на метод Update (или, если нужно, на modifiedField). 2. doUpdate вызывать соответственно не придется, потому что в этом методе он и так вызывается. 3. Производительность в этом случае, ИМХО, будет лучше, чем в Вашем варианте. |
|
|
За это сообщение автора поблагодарили: fialka (1). |
14.03.2007, 10:30 | #7 |
Участник
|
kashperuk и belugin спасибо... привели к пути истинному
|
|