ник: osmor
проверка валидности изменений
должна производиться перед обновлением записи. |
поскольку проверка занимает примерно от 30 сек до 2 мин., то сейчас проверяются все записи измененные /добавленные от открытия формы (или предидущего сохранения) до нажатия кнопки "сохранить". Это может быть и одна запись и много.
Перед началом копирования еще не измененная запись копируется в отдельную таблицу (условно "tblEdetedRecords"), а все изменения сохраняются в главной.
После нажатия кнопки "сохранить". Изменяемые записи с новыми значениями полей копируются в таблицу (условно "tblNewRecords")из которой производится проверка и удаляются из основной (вероятно не будут удаляться). Дальше идет проверка, с выводом после каждого этапа проверки записей "не прошедших" этап с возможностью поправить ошибки (если это возможно). После окончания проверок записи добавляются обратно, либо из таблицы "tblNewRecords" (с новыми значениями) либо из "tblEdetedRecords" (со старыми).
К сожалению пока если изменялись несколько полей, а запись не валидна только по одному, то отменяются все изменения в этой записи. Но дело в том что валидность поля (записи) часто зависит от совокупности полей. и если откатить только часть полей, по запись может стать не валидной. В общем очень сложные проверки.