Валидация

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Проблемка такая, необходимо проверять заполнено ли поле на форме.
В Input Validation данного поля:
Код:
@If (Изделие = ""; @Failure("Необходимо ввести вид изделия");@Success )
например при закрытии документа если поле не заполнено, вывести данное сообщение и не закрывать документ, у меня же выводиться сообщение, и документ закрывается.
 
M

morpheus

<!--QuoteBegin-kizarek+23:07:2007, 08:40 -->
<span class="vbquote">(kizarek @ 23:07:2007, 08:40 )</span><!--QuoteEBegin-->Изделие
[snapback]72979" rel="nofollow" target="_blank[/snapback]​
[/quote]
ДЛя начала попробовать @ThisValue
это раз

втарое Input Validation служит для запрета СОХРАНЕНИЯ документа, если поле не отвечает критериям. Ато как же человек выйдет из документа, с другой стороны можна поставить флаг( поле) которому присваивать значеия, а на QueryClose - это значение обрабатывать и не давать закрыть документ
@Failure prevents the user from saving the document until the user enters a value that meets the criteria.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Morpheus, если можно немного поподробнее, если можно то примерчик кода и куда его поместить. Ну @ThisValue просто проверит заполнено ли поле, можно и без него. Input Validation - т.е. документ не сохраниться просто?
 
M

morpheus

Для: kizarek

@ThisValue - Returns the value of the current field.
я имел в виду
@If (@ThisValue = ""; @Failure("Warning!...");@Success )

Ну а примерчик, я ведь так и не понял что Вам канкретнно надо, изьясняйтесь яснее

догадываюсь что Вам надо запретить закрытие документа, пока не заполнено поле,

В форме в событии
Да, кстати, надеюсь Изделие - это выдуманое имя поля ( не используйте кирилицу в названии полей )


Код:
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
if Len( Source.Document.Изделие ) = 0 then Continue = False
End Sub
 
R

Ronchik

<!--QuoteBegin-Morpheus+23:07:2007, 09:49 -->
<span class="vbquote">(Morpheus @ 23:07:2007, 09:49 )</span><!--QuoteEBegin-->Source.Изделие
[snapback]72995" rel="nofollow" target="_blank[/snapback]​
[/quote]
Код:
Source.Document.Изделие(0)
 
G

Guest

Можно написать что то вроде этого:
Код:
 Function checkOnNonSpaceFields ( listFields As String , listFieldNames As String ) As Integer	 
Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim docUI As NotesUIDocument
Dim listFieldsV As Variant
Dim listFieldNamesV As Variant
Dim flag As Integer

Set docUI = workspace.CurrentDocument
Set doc = docUI.Document

listFieldsV		 = Explode ( listFields )
listFieldNamesV = Explode ( listFieldNames )

checkOnNonSpaceFields = False

If Ubound ( listFieldsV ) <> Ubound ( listFieldNamesV ) Then
Messagebox "Количество имен полей и их названий не совпадает" , 48 , "Ошибка"
Exit Function
End If

For i=0 To Ubound ( listFieldsV )
flag = True

If doc.HasItem ( listFieldsV ( i ) ) Then
flag = False
value = doc.GetItemValue ( listFieldsV ( i ) )
If Ubound ( value ) = 0 And Trim ( value ( 0 ) ) = "" Then flag = True
End If

If flag Then
Messagebox {Поле "} + listFieldNamesV ( i ) + {" должно быть заполнено.} , 48 , {Внимание}
On Error Resume Next
Call docUI.GotoField ( listFieldsV ( i ) )
Exit Function
End If
Next

checkOnNonSpaceFields = True
End Function
В функцию передаются поля и их названия. Соответственно проверяется совпадает ли количество полей и названий, а также заполнено ли каждое поле. В QuerySave пишите:
Код:
 Continue = checkOnNonSpaceFields( listFields$ , listFieldNames$ )
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Morpheus, Ronchik, спасибо за помощь, с этим разобрались. Поля не кирилицей называю, привычка. А что бывают косяки из-за латинских имён полей?
 
M

morpheus

Для: Ерюков Алексей
Круто, но много, да и не про сохранение велась реч ( это можно изобразить инпут валидейшенами )

<!--QuoteBegin-kizarek+23:07:2007, 10:03 -->
<span class="vbquote">(kizarek @ 23:07:2007, 10:03 )</span><!--QuoteEBegin-->А что бывают косяки из-за латинских имён полей?
[snapback]73007" rel="nofollow" target="_blank[/snapback]​
[/quote]
Это как минимум плохой тон(кирилица)!

Для: Ronchik
Спасибо, незаметил
 
G

Guest

Для: Morpheus
Насколько я понял надо было сделать, чтобы при невведенных данных не было выхода из документа. Я собственно и подкинул код: если Вы жмете на выход, то появляется сообщение: сохранить или нет. Если сохранить, то извольте поля заполнить, если нет - то выход
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--QuoteBegin-kizarek+23:07:2007, 11:03 -->
<span class="vbquote">(kizarek @ 23:07:2007, 11:03 )</span><!--QuoteEBegin-->А что бывают косяки из-за латинских имён полей?
[snapback]73007" rel="nofollow" target="_blank[/snapback]​
[/quote]
Из-за латинских как раз не бывают. Из-за русских были.
 
Мы в соцсетях:

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