проверка на Lotusscript

  • Автор темы Yarotskaya
  • Дата начала
Y

Yarotskaya

#1
Помогите написать на LotusScript проверку заполнения обязательных полей на форме с выводом сообщения и передачей фокуса ввода на незаполненное или неправильно заполненное поле.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 233
18
#2
Yarotskaya
а чем вас валидация на поле не устроила?
 
Y

Yarotskaya

#3
начальство хочет видеть эту проверку на скрипте!
 
D

Darker

#4
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim doc As NotesDocument
Dim fields List As String
fields("SearchFieldType")="Тип поля"
fields("SearchField")="Наименование поля"
fields("SearchField_kaz")="Наименование поля (каз.)"
fields("SearchFieldName")="Имя поля в Lotus"
Set doc=source.Document
Forall f In fields
If doc.GetItemValue(Listtag(f))(0)="" Then	
Msgbox "Не заполнено поле "+f
Continue=False
source.GotoField(Listtag(f)) 
Exit Sub
End If
End Forall
End Sub
 
K

Klido

#5
проще сделать что-то типа функции, которая принимает список полей и проверяет,а уже потом дергать по мере необходимости...
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
Код:
dim reqFields List as String
reqFields("Поле1") = "Field1"
reqFields("Поле2") = "Field2"

Function HasRequired(doc As NotesDocument, fields As Variant) As Boolean
Dim Item As Variant
Dim Msg As String
HasRequired = False
Forall fieldName In fields
Set Item = doc.GetFirstItem(fieldName)
If Item Is Nothing Then
Msg = Msg + "- " + Listtag (fieldName) + Chr$(13)
ElseIf Item.Text = "" Then
Msg = Msg + "- " + Listtag (fieldName) + Chr$(13)
End If
End Forall
If Msg <> "" Then
Msg = "Не заполнены обязательные поля:" + Chr$(13) + Msg
MsgBox Msg
HasRequired = True
End If	
End Function
 

Omh

Lotus team
04.07.2007
2 210
1
#8
Сделаю вброс шоколада в вентилятор.

Мой вариант:
Код:
Function CheckReqFields(Doc As NotesDocument, Flds List As String, ShowMsg As Boolean) As Boolean
On Error Goto Errh	

CheckReqFields = False

If Doc Is Nothing Then Exit Function

Dim FldName As String

Forall x In Flds
FldName = Listtag(x)
If Trim$(FldName) <> "" Then
If Trim$(Implode(Doc.GetItemValue(FldName), "")) = "" Then 
If ShowMsg Then Messagebox {Field "} + x + {" is required!}, 0 + 64, "Attention!"
Exit Function
End If
End If
End Forall

CheckReqFields = True

Exit Function
Errh:
Call ErrHandler
Exit Function
End Function
Flds List As String - переменная вида Flds("НАЗВАНИЕ ПОЛЯ") = "Литературное название поля"
Фокус не переопределяю, но это сделать несложно.


Ща перечитал, и вижу, что она, по идее, только с текстовыми полями работает :)
Но, похоже, мне этого хватает.

Если что, вместо If Trim$(Implode(Doc.GetItemValue(FldName), "")) = "" Then можно юзать Item.Text
Ну это так для иллюстрации.
На последнюю инстанцию далеко не претендую.