• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Отмена сохранения формы

  • Автор темы LuMee
  • Дата начала
L

LuMee

Есть у меня форма. При сохранении онной пользователю выдается диалог (NotesUIWorkspace.DialogBox), который пользователь должен заполнить (так я веду историю изменений документа). При этом я хочу сделать так, чтобы при нажатии "Отмена" в этом диалоге документ не сохранялся, оставаясь открытым в режиме редактирования.
Сохранение у меня могут выполнять два action'а:
Сохранить и закрыть:
Код:
@If(
@IsValid;
@Do(
@Command([FileSave]);
@Command([FileCloseWindow])
);

""
)
и Сохранить:
Код:
@If(
@IsValid;
@Do(
@Command([FileSave]);
@Command([EditDocument]; "0")
);

""
)
На Querysave формы пишу код такого рода:
Код:
Dim doc As NotesDocument
Dim db As NotesDatabase
...
If (юзер сделал то, что надо отразить в истории) Then
Set doc = New NotesDocument(db)
If workspace.DialogBox(..., doc) Then
...
Call doc.Save(True, True)
Else
Continue = False
End If
End If
Проблема заключается в том, что если юзер жмет "Отмену" на диалоге, то, если выполняется Сохранить и закрыть, все равно выдается сообщение, не желаю ли я, мол, сохранить документ. При выполнении Сохранить Notes и вовсе торжественно зависает.
Подскажите, плз, что же я делаю не так?
 

Murtas

Green Team
11.04.2006
137
1
BIT
4
не знаю про насчет зависает ... но тут сразу бросается в глаза то, что ты можешь не дать сохранить документ в Querysave ... а в кнопке Save and Close после неудачного сохранения пытаешся закрыть. Вот оно и спрашивает хочешь ли ты сохранить ... по сути нужно нужно запретить и закрытие если чего-то не сделано. Поэтому в твоем случае, видно, лучше разделить кнопки Сохранить и Закрыть.
 
R

root

Можно сделать обработку с применением SaveOptions =0
 
L

LuMee

но тут сразу бросается в глаза то, что ты можешь не дать сохранить документ в Querysave ... а в кнопке Save and Close после неудачного сохранения пытаешся закрыть. Вот оно и спрашивает хочешь ли ты сохранить ... по сути нужно нужно запретить и закрытие если чего-то не сделано.
Почему не могу не дать сохранить в QuerySave? Он вроде для того и нужен. Кстати, на QueryClose стоит похожий обработчик (диалогов не показывает, а просто проверяет, что все правильно.. если что - Continue = False). Так что по идее он не должен закрываться в принципе.
 

Murtas

Green Team
11.04.2006
137
1
BIT
4
... выполняется <!--QuoteBegin-LuMee+11:08:2006, 15:26 -->
<span class="vbquote">(LuMee @ 11:08:2006, 15:26 )</span><!--QuoteEBegin-->@Command([FileSave]);
@Command([FileCloseWindow])
[snapback]42121" rel="nofollow" target="_blank[/snapback]​
[/quote]

и если команда @Command([FileSave]); не сохранила документ, а @Command([FileCloseWindow]) выполняется всегда, то показывается диалог.
 
E

Elena Nefedova

Для Lumee:
Лучший вариант кнопки "Сохранить и закрыть" придумала компания Lotus, когда еще не вошла в IBM:
Код:
@If(@Command([FileSave]); @Command([FileCloseWindow]); @Success)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!