13.12.2013, 16:10 | #1 |
Участник
|
Нужно изменить значение неключевого поля(-ей) в некоторых записях. Задача-то несложная, но вопрос: чем лучше это делать?
Так: Код: SETRANGE(накладываем нужный фильтр); IF FINDSET(TRUE, FALSE) THEN REPEAT Поле := Новое значение; MODIFY; UNTIL NEXT = 0 Код: SETRANGE(накладываем нужный фильтр); MODIFYALL(Поле, Новое значение) Что скажете, спецы? Как будет грамотнее? |
|
13.12.2013, 17:43 | #2 |
Участник
|
http://dynamicsuser.net/blogs/waldo/...deleteall.aspx
тут пишут, что в вашем случае быстрее будет работать modifyall |
|
14.12.2013, 18:27 | #3 |
Участник
|
Будет ещё быстрее работать, если отфильтровать только те записи, которые требуется изменить, типа:
Код: SETFILTER(поле,'<>%1',Новое значение); Код: SETRANGE(накладываем нужный фильтр); SETFILTER(поле,'<>%1',Новое значение); IF NOT ISEMPTY THEN BEGIN MODIFYALL(поле, Новое значение); END; |
|
16.12.2013, 23:23 | #4 |
Участник
|
А кто сказал, что интересует скорость выполнения?
Например при изменении с помощью MODIFYALL() не получится вызвать VALIDATE() изменяемого поля. |
|
18.12.2013, 11:06 | #5 |
Участник
|
А еще MODIFYALL() не видит установленных в реке переменных.
То есть, если написано так Код: t36.SetMode(1); t36.MODIFYALL("Posting Date", TODAY(), FALSE); |
|
18.12.2013, 11:50 | #6 |
Участник
|
Ребята, всем Данке +
Приняла к сведению. |
|