|
Отслеживание редактирования
|
|||
---|---|---|---|
#18+
Всем доброго дня! Прошу помочь с DSum или натолкнуть на более правильный подход. Есть форма и на ней две абсолютно идентичные ленточные субформы, нижняя для чтения, верхняя для редактирования. В каждой из них ровно 11 записей и 12 полей. Null разрешён. Редактировать можно все поля, кроме ID. Задача - понимать, произведено ли редактирование. Что уже сделано: 1. На редактируемой субформе в каждом контроле есть условное форматирование Код: sql 1.
Так пользователю подсвечиваются отредактированные значения. 2. На редактируемой субформе есть скрытый контрол [row_check] не привязанный к таблице. В нем источник данных Код: sql 1. 2. 3. 4.
Если в поле не 0, то я понимаю, что запись редактировалась. 3. В примечании формы есть скрытый контрол, в котором я хочу вывести 1, если хотя бы одна из записей была отредактирована, или 0 в противном случае. Перепробовал разные варианты с DSum и DMax. Сейчас там Код: sql 1.
, и он всегда даёт 0. Был ещё вариант Код: sql 1.
, так этот показывает то 11 (по числу записей), то null. По-видимому, я не до конца понимаю логику этих функций. Как сделать правильно? P. S. Конечная цель - не считать отредактированной форму, в которой пользователь что-то поменял, но потом вернул как было. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2016, 14:52 |
|
Отслеживание редактирования
|
|||
---|---|---|---|
#18+
Я бы полностью взял управление в "ручной режим", например так: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2016, 16:04 |
|
Отслеживание редактирования
|
|||
---|---|---|---|
#18+
Что такое "sfrm_readonly" и "sfrm_for_edit"? Таблицы? "controlname1" - имена контролов на форме совпадают с именами полей в таблице? Функции по подмножеству работают исключительно с полями указанной таблицы (или сохраненного запроса), в т.ч. и в условии отбора. Вычисляемое поле формы ("row_check") в них использовать нельзя. В форме не может быть несколько редактируемых записей. Как только вы переходите с редактируемой записи на другую - изменения сохраняются. ШпинатПрошу помочь с DSum или натолкнуть на более правильный подход! У полей формы, связанных с источником, св-во OldValue возвращает исходное значение в источнике, которое можно сравнить с текущим значением. Вместо многократного использования DLookup можно прямо в модуле формы (ну или в общем модуле) нарисовать функцию, сравнивающую эти значения у указанного поля или у всех полей формы в цикле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2016, 16:12 |
|
Отслеживание редактирования
|
|||
---|---|---|---|
#18+
PredeclaredЯ бы полностью взял управление в "ручной режим"Не понял. Поля в форме для редактирования и так редактируются пользователем вручную. Анатолий ( Киев )Что такое "sfrm_readonly" и "sfrm_for_edit"? Таблицы?Это имена субформ. Каждая из них имеет источником данных одноимённую таблицу. На момент открытия главной формы обе таблицы заполняются одинаковым стартовым набором данных, но одна субформа отведена для редактирования, а вторая просто показывает состояние "Как было". Анатолий ( Киев )"controlname1" - имена контролов на форме совпадают с именами полей в таблице? Да. Кроме контрола [row_check] Анатолий ( Киев )Функции по подмножеству работают исключительно с полями указанной таблицы (или сохраненного запроса), в т.ч. и в условии отбора. Вычисляемое поле формы ("row_check") в них использовать нельзя.Ясно. Не знал. Спасибо! Анатолий ( Киев )В форме не может быть несколько редактируемых записей. Как только вы переходите с редактируемой записи на другую - изменения сохраняются.Это я, слава богу, понимаю. Анатолий ( Киев )У полей формы, связанных с источником, св-во OldValue возвращает исходное значение в источнике, которое можно сравнить с текущим значением. Пробовал. После сохранения записи OldValue = Value. История не сохраняется. А мне нужно, чтобы можно было несколько разных вариантов внести, и даже после этого если введённое значение совпадает с аналогичным из нижней формы, чтобы оно помечалось как не редактированное. Анатолий ( Киев )Вместо многократного использования DLookup можно прямо в модуле формы (ну или в общем модуле) нарисовать функцию, сравнивающую эти значения у указанного поля или у всех полей формы в цикле.Анатолий, я не хотел этого делать, т. к. надеялся, что есть способ проще и не хотел загромождать модули необязательным кодом. Если кроме VBA путей нет, буду делать на VBA. Спасибо за разъяснение! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2016, 16:42 |
|
|
start [/forum/topic.php?fid=45&msg=39276491&tid=1613344]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 468ms |
0 / 0 |