• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Проблема с Datetimevalue

  • Автор темы wowa
  • Дата начала
W

wowa

Есть код, он срабатывает при сохранении:

Код:
Set item = doc.GetFirstItem( "OK_Date_14")
Set adt_ApprovalDate(i) = item.DateTimeValue

Ошибка выскакивает на второй строчке "Object variable not set".
Было обновление дизайна, в старых документах этого поля нет. При открытии документа, поле появляется(правда оно скрытое), но в свойствах документа оно видно и оно = "".
Дак вот, если редактируешь документ и сохраняешь, то выскакивает ошибка на этой строчке. Есть точно-но такое же поле = "", ошибки нет.

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

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

nvyush

wowa
Код:
If item Is Nothing Then
'своя обработка
Else
Set adt_ApprovalDate(i) = item.DateTimeValue
End If
 
W

wowa

nvy , к сожалению я не могу проверить дебаггером что Item is Nothing в данном случае.
Я почти уверен что он Nothing, вопрос почему?

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

Darker

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

wowa

Set adt_ApprovalDate(i)
не определен

ToxaRat,

Код:
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
 
N

nvyush

nvy , к сожалению я не могу проверить дебаггером что Item is Nothing в данном случае.
Я почти уверен что он Nothing, вопрос почему?

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

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

wowa

nvy , я не хочу изменять старый , давно написанный не мной код.
Почему выскочила эта ошибка только у одного человека?
Если я напишу агент, который создаст в каждом документе это поле, значение = "", то item же нивкоем случае не будет nothing, я прав?
 
N

nvyush

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
А в поле не ошибочное значение случайно? ЕМНИП, в этом случае метод возвращает Nothing.
 
W

wowa

А в поле не ошибочное значение случайно? ЕМНИП, в этом случае метод возвращает Nothing.
Если item is Nothing, то item.DateTimeValue - Ошибка
Если item = "", то item.DateTimeValue - Nothing, что для меня нормально

Поле не CFD или содержится в CFD-секции?

Вот тут сложнее. Само поле Editable, но скрытое. Далее, условие скрытие: Если Поле№2="1". Это поле тоже новое, и в старых документах его нет. И это поле скрытое и Computed
 
Мы в соцсетях:

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