Isnewnote

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#1
Парочка багов (или фич?).
Первый:
Событие QuerySave пустое. В PostSave пишем:
Код:
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
В результате с запущенным дебаггером мы получим сообщение true, без него - false.

Второй:
В QuerySave пишем, например:
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Source.Document.Test(0) = "asdas" Then Sleep(1)' на форме есть поле Test
Continue = True
End Sub
В результате получаем false. Если заремарить условие, то true.

Это что такое?

Причем во всех случаях происходит сохранение документа. Т.е. в PostSave IsNewNote должно быть всегда False. Или нет?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Оказывается, первый работает только в локальной базе.
Второй - везде.
 
F

Fossil Code

#3
А endif намеренно пропущен? Ну и что, что синтаксис позволяет...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Для: Fossil Code
В смысле пропущен? Не понял вопроса. :rolleyes:
 
H

Hedg

#6
Ну и чё тут не понятного ?? Fossil Code обратил внимание на то, что оператор if не закрыт endif'ом.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
Для: Hedg
В соответствие с синтаксисом End If мало того, что не нужен, так он не может быть там.
 
F

Fossil Code

#8
Ну, раззадорили, право!

Проверил и Ваш вариант и следующий

Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Source.Document.Test(0) = "asdas" Then
Sleep(1)
End If
Continue = True
End Sub

Преимущество последнего в том, что гораздо проще судить в отладчике, выполняется условие, или нет.

Впрочем, это лирическое отступление. Так вот, не вижу, почему Вы решили, что "В результате получаем false. Если заремарить условие, то true." False не было вовсе, как и полагает код, т.к. при любом значении поля Test документ сохранялся. Отработка паузы по значению поля также работала правильно... R.7.0.2
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
<!--QuoteBegin-Fossil Code+9:02:2007, 16:31 -->
<span class="vbquote">(Fossil Code @ 9:02:2007, 16:31 )</span><!--QuoteEBegin-->Так вот, не вижу, почему Вы решили, что "В результате получаем false. Если заремарить условие, то true." False не было вовсе, как и полагает код, т.к. при любом значении поля Test документ сохранялся.
[snapback]55646" rel="nofollow" target="_blank[/snapback]​
[/quote]
Само условие в QuerySave не имеет значения. Важно то, что происходит потом в событии PostSave
Сделай так.
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Msgbox Source.Document.UniversalID
Continue = True
End Sub
Sub Postsave(Source As Notesuidocument)
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
End Sub
А потом так (заремарина строка):
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
'	Msgbox Source.Document.UniversalID
Continue = True
End Sub
Sub Postsave(Source As Notesuidocument)
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
End Sub
Так вот в первом случае появится сообщение "true", а во втором "false". Вот и вся багофича.
 
F

Fossil Code

#10
Понятно. Не так Вас сначала понял. Показалось, что речь иде о двух _разных_ багах. И обусуждал изолированный второй. Заблуждение подкрепилось Вашим вторым постом :)