Закрытие формы без сохранения записи

Diroled
Дата: 28.09.2005 16:15:05
Собсно сабж,
Есть форма заказа. В ней куча полей. При заполнении хотя-бы одного поля запись автоматически сохраняется. Но если нажать ESC и закрыть окно запись, не сохраняется. Если выходить без ESC, аксесс ругается на целостность данных.

Вопрос как сделать закрытие без сохранения текущей записи и без лишних вопросов?
guest_t
Дата: 28.09.2005 16:20:57
me.undo
Тяп-ляп
Дата: 28.09.2005 16:28:55
автор
При заполнении хотя-бы одного поля запись автоматически сохраняется. Но если нажать ESC и закрыть окно запись, не сохраняется.
Судя по смыслу цитаты, запись все-таки не сохраняется в таблице, а просто появляется новая запись в форме. Или я ошибаюсь?

автор
Если выходить без ESC, аксесс ругается на целостность данных.

Прежде чем реализовать каким-либо образом решение, надо сперва ответить на вопрос: как отличить ситуацию, когда не надо сохранять запись от ситуации, когда пользовать совершил ошибку при вводе данных и аксесс ругается на целостность данных?
АлексейК
Дата: 28.09.2005 16:37:22
возможно поможет в событии формы ошибка поставить
sendkeys "{ESC}{ESC}"
Diroled
Дата: 28.09.2005 16:40:14
guest_t
me.undo


Поясните плиз
Diroled
Дата: 28.09.2005 16:51:32
Тяп-ляп
автор
При заполнении хотя-бы одного поля запись автоматически сохраняется. Но если нажать ESC и закрыть окно запись, не сохраняется.
Судя по смыслу цитаты, запись все-таки не сохраняется в таблице, а просто появляется новая запись в форме. Или я ошибаюсь?

автор
Если выходить без ESC, аксесс ругается на целостность данных.

Прежде чем реализовать каким-либо образом решение, надо сперва ответить на вопрос: как отличить ситуацию, когда не надо сохранять запись от ситуации, когда пользовать совершил ошибку при вводе данных и аксесс ругается на целостность данных?


Форма открывается с созданием новой записи
DoCmd.OpenForm "Моя Форма", , , stLinkCriteria, acFormAdd
После открытия нажав сразу ESC и закрыв форму запись не сохраняется. Если вносить данные в основную форму, а потом нажать ESC, все поля опусташаются и закрыв форму запись не сохраняется. А вот если переходишь в подчиненную форму, то в прилинкованой таблице автоматически создаются новые записи при внесении в них изменение. Вот здесь если нажать ESC очищается только подчиненная форма. Переход фокуса на основную не помогает, и при закрытии ругается на целостность данных.
Смотрю в таблицы основной и подчиненной формы и вижу, что в таб. основной формы запись есть, а в подчиненной нет.

Обошел это простым удаление записи, но хочется сделать граммотнее
Diroled
Дата: 29.09.2005 10:07:03
автор

Форма открывается с созданием новой записи
DoCmd.OpenForm "Моя Форма", , , stLinkCriteria, acFormAdd
После открытия нажав сразу ESC и закрыв форму запись не сохраняется. Если вносить данные в основную форму, а потом нажать ESC, все поля опусташаются и закрыв форму запись не сохраняется. А вот если переходишь в подчиненную форму, то в прилинкованой таблице автоматически создаются новые записи при внесении в них изменение. Вот здесь если нажать ESC очищается только подчиненная форма. Переход фокуса на основную не помогает, и при закрытии ругается на целостность данных.
Смотрю в таблицы основной и подчиненной формы и вижу, что в таб. основной формы запись есть, а в подчиненной нет.

Обошел это простым удаление записи, но хочется сделать граммотнее


Неужели ни кто не сталкивался с такой проблемой
Тяп-ляп
Дата: 29.09.2005 10:16:42
Недостаточно точно описал.
Например, вот это
автор
Переход фокуса на основную не помогает
Поясни подробнее по шагам, какое поведение ты ожидаешь от форм и по каким событиям.
Diroled
Дата: 29.09.2005 11:35:10
Тяп-ляп
Недостаточно точно описал.
Например, вот это
автор
Переход фокуса на основную не помогает
Поясни подробнее по шагам, какое поведение ты ожидаешь от форм и по каким событиям.


Открывается форма "Заказы" с полями для заполнения методом DoCmd.OpenForm "Моя Форма", , , stLinkCriteria, acFormAdd т.е. открывается с созданием новой записи в прилинкованой таблице "Заказы". Если я передумал или на пол пути до полного заполнения всех полей решил выйти из формы, мне нужно, чтобы при выходе текущая запись не сохранялась. Это решается пока нажатием при заполнении клавиши ESC, поля с данными сами очищаются, затем закрываю форму. В этом случае начатая запись не созраняется и это меня устраивает.Если выйти без нажатия ESC аксес ругается на целостность и потерю данных, здесь запись тоже не сохраняется, но аксес лишний раз ругается, это меня не устраивает(стандартное сообщение об ошибке). Но! на форме есть подчиненная форма "Проведенные" с прилинкованой таблицей "проведенные" (вид таблицы) в которой есть тоже поля. Новая запись в ней создается автоматически при внесении изменений в пустую ячейку. Так вот в чем проблема, если была создана новая запись в подчиненной форме (таблица "проведенные") то ESC очищает только в ней данные. И при закрытии формы запись сохраняется только в таблице "заказы".

Вот собственно и вопрос как сделать при отказе пользователем завершить заполнение всех данных и при выходе не сохранять запись в таблицах "Заказы" и "проведенные"
Тяп-ляп
Дата: 29.09.2005 12:37:48
автор
при выходе не сохранять запись в таблицах "Заказы" и "проведенные"
Кажется, все ясно. И, более того, задача похожа на стандартную (шапка документа - детали документа).

Я бы тебе посоветовал сделать так:
1. исключить возможность заполнять подчиненную форму, если пользователь
еще не создал запись в главной форме. Я думаю, ты это уже сделал.
2. при закрытии формы проверять есть ли запись(и) в подчиненной таблице для текущего заказа и если нет, удалять запись в главной таблице.