|
Отловить факт изменения данных в таблице
|
|||
---|---|---|---|
#18+
как отловить, что данные в таблице были изменены пользователем при просмотре этой таблицы через форму в гриде. Нужно, чтобы при закрытии формы анализировались данные на предмет изменений и предлагалось записать в случае, если данные менялись. Я использую дублирующие поля - старое значение-новое значение и если при закрытии формы старое<>новому то было изменение. Но как-то это не удобно...Можно на interactivechange в контроле повесить зажигание флага, но если поменялось, а потом вернулось старое значение, этот способ не прокатывает- все равно даст изменение... Может есть какой другой способ, типа встроенной переменной в самом фоксе, которая отслеживает изменение данных по таблице или еще что-то? Буду благодарен за подсказку... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 10:45 |
|
Отловить факт изменения данных в таблице
|
|||
---|---|---|---|
#18+
авторМожет есть какой другой способ, типа встроенной переменной в самом фоксе, которая отслеживает изменение данных по таблице или еще что-то? в фокспро есть буферизация (на пальцах) работает так: - к примеру есть постоянная таблица - перед началом ред-я забираем какую-то часть данных(записей) в буфер (лучший инструмент для этого - курсорадаптер) - после того как потрогали можем либо сохранить, внесенные изм-я, либо нет факт изм-я данных смотрим функциями gtnextmodified, getfldstate, oldval ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 11:51 |
|
Отловить факт изменения данных в таблице
|
|||
---|---|---|---|
#18+
Можно завести еще одно поле для хранения контрольной сумме по записи Например для таблицы с полями ID I , NAME C(35), DATE D добавьте еще поле KS C(20) * Сохранение записи Replace ID With 1, NAME With 'Вася', DATE With date() * Сохранение контрольной суммы Replace KS With KSUM(ID,NAME,DATE) * * Через три дня проверяем SCAN if KS <> KSUM(ID,NAME,DATE) .and. messagebox('запись изменена!',33,'Мочить?') = 1 delete endif ENDSCAN Волшебная функция ниже, полей может быть много. * расчет контрольной суммы по записи function KSUM lparam p1, p2 , p3, p4, p5, p6 ,p7 ,p8 ,p9 ,p10, p11, p12, p13 local m.KOL_PARAM, i , s , makro m.KOL_PARAM = parameters() s='' for i=1 to m.KOL_PARAM makro = 'p'+alltrim(str(i)) m.TYPE = TYPE(makro) do case case m.TYPE = 'C' s = s + &makro case m.TYPE = 'N' s = s + alltrim(str(&makro)) case m.TYPE = 'D' s = s + dtos(&makro) case m.TYPE = 'T' s = s + tran(&makro) endcase endfor RETURN int(VAL(SYS(2007,s))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2008, 23:02 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1587179]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 128ms |
0 / 0 |