Проблема с Datetimevalue

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

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Есть код, он срабатывает при сохранении:

    Код (Text):
    Set item = doc.GetFirstItem( "OK_Date_14")
    Set adt_ApprovalDate(i) = item.DateTimeValue
    Ошибка выскакивает на второй строчке "Object variable not set".
    Было обновление дизайна, в старых документах этого поля нет. При открытии документа, поле появляется(правда оно скрытое), но в свойствах документа оно видно и оно = "".
    Дак вот, если редактируешь документ и сохраняешь, то выскакивает ошибка на этой строчке. Есть точно-но такое же поле = "", ошибки нет.

    Уточнение, выскакивает только у одного пользователя, у все все нормально. В чем может быть проблема?
    Версия лотуса 8.0.2........

    Из-за чего эта ошибка может быть только у одного пользователя ? И возможно нужно писать миграционный агент, который создает это поле в старых документах?
    Есть какие-н идеи?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    wowa
    Код (LotusScript):
    If item Is Nothing Then
    'своя обработка
    Else
    Set adt_ApprovalDate(i) = item.DateTimeValue
    End If
     
  3. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    Код (LotusScript):
    Set adt_ApprovalDate(i)
    не определен
     
  4. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nvy , к сожалению я не могу проверить дебаггером что Item is Nothing в данном случае.
    Я почти уверен что он Nothing, вопрос почему?

    Если открыть два одинаковых документа, то у одного все хорошо срабатывает, а у второго ошибка
     
  5. Darker

    Darker Гость

    А может без определения Item-а обойтись?
    Сразу считывай doc.OK_Date_14(0)
    потом не заморачиваясь
    Код (LotusScript):
    temp=cstr(doc.OK_Date_14(0))
    if temp<>"" and len(temp)>=10 then set adt_ApprovalDate(i)=Cdat(left(temp,10))
     
  6. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    ToxaRat,

    Код (Text):
    Dim adt_ApprovalDate(0 To Anz_App_Freigabe) As NotesDateTime

    For i = 0 To Anz_App_Freigabe
    Set item = doc.GetFirstItem( "OK_Date_"+DocOkApp(i))                 ' Approval Date  
    Set adt_ApprovalDate(i) = item.DateTimeValue
    Next
    Походу не в этом дело, тут вроде все правильно. Там и там от 0 до Anz_App_Freigabe
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А при чём тут дебаггер? Вставляешь вышеприведённый код, вместо коммента свою обработку (заполнить значением по-умолчанию, сообщить пользователю, что о нём думаешь :) и т.п.). Ошибка выскакивать не будет.

    P.S. А чтоб вернее разобраться в причинах, добавить обработчик, который бы скидывал в лог значения переменных, юнид документа, текущего пользователя.
    Set item = doc.GetFirstItem( "OK_Date_"+DocOkApp(i)) — может в DocOkApp(i) дело? Оно правильно проинициализировано?
     
  8. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nvy , я не хочу изменять старый , давно написанный не мной код.
    Почему выскочила эта ошибка только у одного человека?
    Если я напишу агент, который создаст в каждом документе это поле, значение = "", то item же нивкоем случае не будет nothing, я прав?
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Проблема, похоже, не в одном поле. В этой строке
    Set item = doc.GetFirstItem( "OK_Date_"+DocOkApp(i))
    название поля вычисляется динамически. Если есть возможность написать агент, который прошерстит все документы и добавит ВСЕ нужные поля и это решение кажется проще — вперёд. Но я б таки добавил обработку ошибок в код.
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А в поле не ошибочное значение случайно? ЕМНИП, в этом случае метод возвращает Nothing.
     
  11. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поле не CFD или содержится в CFD-секции?
     
  12. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Если item is Nothing, то item.DateTimeValue - Ошибка
    Если item = "", то item.DateTimeValue - Nothing, что для меня нормально

    Вот тут сложнее. Само поле Editable, но скрытое. Далее, условие скрытие: Если Поле№2="1". Это поле тоже новое, и в старых документах его нет. И это поле скрытое и Computed
     
Загрузка...
Похожие Темы - Проблема Datetimevalue
  1. c0de3r
    Ответов:
    5
    Просмотров:
    127
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    136
  3. SoulPaladin
    Ответов:
    4
    Просмотров:
    133
  4. Artael
    Ответов:
    1
    Просмотров:
    110
  5. ENSLER
    Ответов:
    0
    Просмотров:
    103

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