24.05.2006, 16:46 | #1 |
Участник
|
Как программно отменить сохранение записи
Если перекрыть метод ValidateWrite, то если пользователь ввел что-то не то, то выдается ошибка, но выйти из этой ситуции можно двумя способами:
1. Ввести правильное значение и сохранить запись 2. Нажать Esc и не сохранять запись. Как в случае ошибки программно отменить сохранение записи (аналогично нажатию Esc и кнопки "Нет") |
|
24.05.2006, 17:05 | #2 |
Moderator
|
По Esc не отменяется сохранение, его просто не происходит.
__________________
Андрей. |
|
24.05.2006, 17:10 | #3 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
По Esc не отменяется сохранение, его просто не происходит.
Получается так: я создаю запись, ввожу неверные данные, ValidateWrite выдает ошибку и после этого, чтобы не сохранять запись нужно нажимать Esc и "Нет". Хотелось бы чтобы это происходило автоматически - ввел неверные данные - запись не создается. |
|
24.05.2006, 17:15 | #4 |
Участник
|
Цитата:
Сообщение от Lucky13
Как в случае ошибки программно отменить сохранение записи (аналогично нажатию Esc и кнопки "Нет")
Код: aaa.data(aaa.orig()); Кажется так... ? |
|
24.05.2006, 17:19 | #5 |
Moderator
|
Если нужно именно не создавать запись, то на validateWrite() сделайте
Код: ... if (!this.cursor().recId) this.delete(); ...
__________________
Андрей. |
|
24.05.2006, 17:27 | #6 |
Участник
|
Если сделать
Код: ... if (!this.cursor().recId) this.cursor().delete(); ... |
|
24.05.2006, 17:38 | #7 |
Moderator
|
По ESC система всего лишь просекает, что в форме были изменения, и спрашивает, вызвать ли метод FormDatasource.write().
Т.е. результат будет тот же, что и по моему примеру - запись не создастся (в моем случае - удалится из кэша Datasource).
__________________
Андрей. |
|
24.05.2006, 18:37 | #8 |
Участник
|
а почему не написать так? (если нужно именно программно)
Код: if(this.validateWrite()) { this.write(); } |
|
24.05.2006, 18:52 | #9 |
Участник
|
Цитата:
Сообщение от savel
а почему не написать так? (если нужно именно программно)
Код: if(this.validateWrite()) { this.write(); } |
|
24.05.2006, 19:11 | #10 |
Участник
|
Цитата:
Сообщение от Lucky13
Тогда запись останется
если её ещё не было, то первый же validateWrite() её не пустит. Если уже была, и в настоящий момент её хотят не корректно про update'ить validateWrite() опять же это не даст. |
|
24.05.2006, 19:53 | #11 |
Участник
|
Цитата:
Сообщение от savel
а почему Вы считаете, что запись останется?
если её ещё не было, то первый же validateWrite() её не пустит. Если уже была, и в настоящий момент её хотят не корректно про update'ить validateWrite() опять же это не даст. |
|
24.05.2006, 20:05 | #12 |
Участник
|
Цитата:
Сообщение от Lucky13
Да Вы правы, ValidateWrite не дает уйти с некорректной записи и соответственно сохранить ее в таблице, в этом вся и проблема.
|
|
25.05.2006, 09:07 | #13 |
Участник
|
Цитата:
Сообщение от mazzy
Нажимайте Ctrl+Q. Это выход без проверки и без записи.
|
|
25.05.2006, 10:08 | #14 |
Модератор
|
Посмотрите, как сделано создание заказа. (Форма SalesCreateOrder) Там подобная задача решается перекрытием walidatewrite и write датасорса.
C Уважением, Георгий |
|
25.05.2006, 10:10 | #15 |
Moderator
|
А чем вам мой-то способ не понравился? Вроде делает что требуется...
__________________
Андрей. |
|
25.05.2006, 10:18 | #16 |
Участник
|
Цитата:
Сообщение от Lucky13
Повторяю: ... без дополнительных вмешательств пользователя
Вы не достаточно дали информации, чтоб посоветовать что-либо более конкретное. Если правильность введения записи может ограничится правильность введения в одно поле - может тогда перекрыть validateField() ? И пользователь просто не сойдёт с поля пока правильно его не заполнит. Да и если validateWrite() тупо будет возвращить false и Вы не быдите генерить сообщение об ошибке новая запись так и останется не введённой, и Вы с неё не сможите сойти. Повторюсь, удалять запись без реакции пользователя будет просто не корректно по отношению к пользователю (опять же не знаю постановки задачи). |
|
25.05.2006, 10:26 | #17 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
А чем вам мой-то способ не понравился? Вроде делает что требуется...
|
|
Теги |
validate, validatewrite, write |
|
|