|
![]() |
#1 |
Участник
|
Извините, просто сложилось впечатление, что вы не на 100% понимаете, как все эти reread, refreshEx и т.п. методы работают, решил подбросить ссылку.
Если research работает, как насчет запомнить выделенные записи перед вызовом research, а потом выделить их из кода? X++: void clicked() { Table1 table1Local; Table1 table1ForUpdate; MultiSelectionHelper helper = MultiSelectionHelper::construct(); Set selectedRecords = new Set(Types::Record); SetEnumerator selectedRecordEnumerator; helper.parmDatasource(Table1_ds); table1Local = helper.getFirst(); while (table1Local.RecId != 0) { selectedRecords.add(table1Local.data()); ttsBegin; select firstonly forUpdate table1ForUpdate where table1ForUpdate.RecId == table1Local.RecId; table1ForUpdate.Field1 = 'some value'; table1ForUpdate.update(); ttsCommit; table1Local = helper.getNext(); } Table1_ds.research(); selectedRecordEnumerator = selectedRecords.getEnumerator(); while (selectedRecordEnumerator.moveNext()) { table1Local = selectedRecordEnumerator.current(); Table1_ds.findRecord(table1Local); Table1_ds.mark(true); } } |
|
![]() |
#2 |
Участник
|
Спасибо.
Я только обновляю записи, не добавляю/удаляю, поэтому reread&refresh дожен быть достаточен. Но почему-то , если транзакция успешна, то благополучно все изменения отображаются, а если откатывается - то частично данные обновляются на форме... Если reread стоит после отката, то, по идее, он должен "подхватить" актуальные уже записи ... и дело даже не в refresh (-2) ( и (-1) иже с ним), тк они тоже не помогают Кэширование на таблице уже даже поменяла, не помогло Стандартное решение должно работать, это же стандартный сценарий. Значит, где-то проблема, раз не работает, и желательно ее найти . Как вариант - да, промаркирую заново выбранные записи, но это все-таки будут костыли. |
|
|
|