Не Большой Набор Полезных Функций

Тема в разделе "Lotus - Программирование", создана пользователем RixPvl, 2 дек 2011.

  1. RixPvl

    RixPvl Well-Known Member

    Регистрация:
    30 ноя 2011
    Сообщения:
    85
    Симпатии:
    0
    Функция проверки на наличие не запрещенных символов в поле, где ? - запрещенные символы
    Код (LotusScript):
    Function Check_BadSymbols(sStr As String) As Boolean
    Check_BadSymbols = False
    Dim f As String
    f = "*[a-z,A-Z,0-9,?,і,?,?,?,?,?,?,?]*"
    If sStr Like f Then Check_BadSymbols = True
    End Function
    Функция проверки роли, работает даже если пользователь находится в группе
    Код (LotusScript):
    Function CheckRolls(Rolls As String) As Boolean
    Dim ses As New NotesSession
    Dim Results,sql As Variant
    Doc As NotesDocument
    Set Doc = ses.currentdocument
    sql = "@IsNotMember("""+Rolls+""";@UserRoles)"
    Results = Evaluate(sql, Doc)
    If Results(0)="1" Then CheckRolls=False Else CheckRolls=True
    End Function
    Функция расчета промежутка между временем, путем вычета 1(-ой) даты из другой
    Код (LotusScript):
    Function TimeDifference(sData1, sData2 As Variant) As String
    Dim buf As Variant
    If (sData1="" Or sData2="") Then
    TimeDifference = "00:00:00"
    Exit Function
    End If

    If CDbl(sData2) >= CDbl(sData1) Then
    buf = CDbl(sData2) - CDbl(sData1)
    Else
    buf = CDbl(sData1) - CDbl(sData1)
    End If
    TimeDifference = CStr(Format(CDat(buf), "hh:mm:ss"))
    End Function
    Чуть позже выложу еще :)
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    вот, каюсь, перенесла сюда пока из Кодебейз, из-за траблов на форуме и пр. руки не дошли опубликовать вовремя.
    Есть вопросы автору по Function CheckRolls(Rolls As String) As Boolean -
    1) Dim ses As New NotesSession
    Set Doc = ses.currentdocument ' wtf?
    2) зачем там Evaluate, чем не подошли not Isnull(ArrayGetIndex(ses.CurrentDatabase.QueryAccessRoles(ses.username), Rolls)) ' или ses.Effectiveusername
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    сама по себе ф-ция вычисления разницы времени не так ценна, как задачи подсчёта рабочих дней/часов и т.п.
    а вот там начнутся таймзоны...
    а вот такой код уже здесь пробегал, я ссылку давал на "недоделанную" ф-цию

    я это к чему - наработки кода - безусловно полезная тема, но стрктурировать её нужно ближе к реальным задачам (можно указывать - для каких задач использовалось)
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А notesDatabase.QueryAccessRoles не работает?
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Вместо
    Код (LotusScript):
    If Results(0)="1" Then CheckRolls=False Else CheckRolls=True
    не лучше ли
    Код (LotusScript):
    CheckRolls = (Results(0) <> "1")
     
  6. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Добавлю ещё:

    TimeDifference
    1.Если в параметрах допустимы только строки, так и надо задекларировать их as String вместо Variant
    2.Грамотней использовать NotesDateTime.Timedifference
    3.Не храните и не работайте с датами как со строками везде, где только возможно.

    Заменить как советовали для CheckRolls и в Check_BadSymbols
    If sStr Like f Then Check_BadSymbols = True
    на
    Check_BadSymbols = (sStr Like f)
     
Загрузка...

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