проверка на Lotusscript

Тема в разделе "Lotus - Программирование", создана пользователем Yarotskaya, 13 июл 2010.

  1. Yarotskaya

    Yarotskaya Гость

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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Yarotskaya
    а чем вас валидация на поле не устроила?
     
  3. Yarotskaya

    Yarotskaya Гость

    начальство хочет видеть эту проверку на скрипте!
     
  4. Darker

    Darker Гость

    Код (LotusScript):
    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
     
  5. Klido

    Klido Гость

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Код (LotusScript):
    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
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Так, учимся читать справку!
    NotesUIDocument.GotoField
    NotesUIDocument.QuerySave
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Сделаю вброс шоколада в вентилятор.

    Мой вариант:
    Код (LotusScript):
    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
    Ну это так для иллюстрации.
    На последнюю инстанцию далеко не претендую.
     
Загрузка...

Поделиться этой страницей