|
![]() |
#1 |
Участник
|
Через столько лет пришлось озадачится, что же все таки делает метод setCurrent. И правильного ответа здесь не нашел. Но выяснил.
setCurrent пихает данные из текущего курсора FormDataSource в кэш данных FormDataSource. Пример для понимания. cliked на форме с датасорсом table1: X++: void clicked() { Table1 t1; ; super(); info(strFmt("%1", table1.field1)); t1.data(table1); t1.field1 = "новое значение"; table1.data(t1); table1_DS.setCurrent(); info(strFmt("%1", table1.field1)); } И получается что этот код не меняет данных в БД, но форма будет отображать "новое значение" в поле "field1" на всех записях на которых вызовете clicked(). Пока не произойдет вызов executeQuery() или reread(). А без setCurrent() форма не хранит "новое значение" и сбрасывает, например, при переходе к другой записи. Проверял на DAX2012. |
|
![]() |
#2 |
Участник
|
Что изменится в вашем примере если закомментировать строку с table1_DS.setCurrent(); ?
Чем вас не устроил ответ 2004 года про активный датасурс? |
|
![]() |
#3 |
Участник
|
Издеваетесь). Ответ 2004 не устроил тем, что он не раскрывает смысла метода. Возможно он также делает и датасорс активным в некоторых случаях, с этим не разбирался, но это точно не его основное назначение.
Цитата:
Что изменится в вашем примере если закомментировать строку с table1_DS.setCurrent(); ?
Надо попробовать и становится понятно) |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|