Функция LotusScript не обновляет поле - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь создать документ для каждого экземпляра строки дат.

Это, однако, не работает, как я надеялся - поле не обновляется, и отладчик вообще ничего мне не показывает.

Может ли кто-нибудь указать мне правильное направление с моим кодом?

Public Sub co_multiDates()

'Basic Error Handler function
'On Error GoTo errorHandler
'errorHandler:  MsgBox("ERROR " & CStr(Err) & ": " & Error$ & " on line " & CStr(Erl))

'Everything below this is designed to populate a field that then populates a column with multiple date values
'This is designed so that when creating a location record for multiple days, there will be multiple entries in the employee's view
Dim w As New NotesUIWorkspace       
Dim multiStartDate As NotesDateTime
Dim multiEndDate As NotesDateTime
Dim tempDate As NotesDateTime
Dim dateArray() As NotesDateTime
Dim dateCounter As Integer
Dim AdjustDay As Integer
Dim Source As NotesUIDocument
Set Source = w.CurrentDocument
Dim thisDoc As NotesDocument
Set thisDoc = Source.Document

' populate multiStartDate and multiEndDate with the values from the StartDate and EndDate fields
Set multiStartDate = New NotesDateTime(thisDoc.GetItemValue("StartDate")(0))
Set multiEndDate = New NotesDateTime(thisDoc.GetItemValue("EndDate")(0))

'assign null value to dateCounter   - calculates the difference between StartDate and EndDate
Let dateCounter = 0

While multiStartDate.TimeDifference(multiEndDate) <= 0

    'add to MultiDates
    ReDim Preserve dateArray(0 To dateCounter)
    Set tempDate = New NotesDateTime(multiStartDate.DateOnly)
    Set dateArray(dateCounter) = tempDate

    'add 1 to the date to loop
    Call multiStartDate.AdjustDay(1)
    dateCounter = dateCounter + 1
Wend

'Replaces the value of the MultiDatesArray field in newDoc (current document)  with the value of dateArray
Call thisDoc.ReplaceItemValue("MultiDates", dateArray)

'Updates audit trail field with any changes
Call SetAuditTrail(w.CurrentDocument.document, "auditTrailField", 1,  "PersonName", "Person Name")

End Sub

Я чувствую, что, возможно, упускаю что-то очень очевидное.

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 января 2012

Исходя из того, что вы используете классы пользовательского интерфейса и обновляете документ, я предполагаю, что вы запускаете этот код в клиенте Notes из документа, открытого в режиме редактирования, поэтому я проверил его в этом контексте с помощьюдобавление вышеуказанного дополнительного кода в форму с полями StartDate, EndDate и Multidates и вызов его из события Click кнопки в этой форме.Он добавлял каждую дату между StartDate и EndDate в поле Multidates, что, по-видимому, в точности соответствует его предполагаемому назначению.

Если вы хотите создать документ для каждой даты в диапазоне, вам нужно добавить код в свой цикл While, например:

' In your declarations...
Dim session as NotesSession
Dim thisDatabase as NotesDatabase
Set thisDatabase=session.CurrentDatabase

' In your loop...
Set newDoc=thisDatabase.CreateDocument
newDoc.Form="ChildForm" ' or whatever 
newDoc.myDate=dateArray(dateCounter)
' Do other stuff to the document, then...
Call newDoc.Save(False, True)

Если любой из моих вышепредположения выключены, отредактируйте свой вопрос с более подробной информацией о контексте, и вы получите лучший ответ.

0 голосов
/ 24 января 2012

Я не уверен, что должна делать эта функция: Call SetAuditTrail(w.CurrentDocument.document, "auditTrailField", 1, "PersonName", "Person Name")

Но в остальной части кода я не вижу сохранения текущего и / или создания нового документа. thisDoc.save(false,true) может помочь.

Я не вижу причин, по которым отладчик не будет запускать этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...