16.06.2006, 14:39 | #1 |
Участник
|
Простой вопрос
Столкнулся с такой ситуацией:
на форме есть Grid, связанный с таблицей. Изменяю некоторым образом строки таблицы. Что-то типа такого: Для каждой строки из Grid-a: Table.ttsbegin(); Table.Field1 = 0; Table.update(); Table.ttscommit(); Далее делаю TableGrid.setFocus(); чтобы отобразились изменения (фокус находится на другом контроле) Вопрос: корректно ли я поступаю и можно ли это оптимизировать? С я Axapt-ой знаком не так давно, так что буду рад советам. |
|
16.06.2006, 14:54 | #2 |
Участник
|
пожалуй так :
ttsbegin; Table.Field1 = 0; Table.update(); ttscommit; Table_ds.refresh(); |
|
16.06.2006, 18:37 | #3 |
Участник
|
И при этом получается что вы изменяете только одну строку всегда - активную в гриде.
Для того, чтобы изменять все - нужно или while select'ом их выбирать for update, или перебирать строки датасорса и потом их обновлять. |
|
16.06.2006, 18:38 | #4 |
Участник
|
А если вы конкретно знаете условия выборки, в которых вам нужно обновить строки, может стоит написать запрос с использованием update_recordset
поищите про него в DevGuide или на форуме - он обновит все строки за один запрос к БД, что значительно повысит производительность. После этого, опять же, нужно перечитать DS |
|