Как изменить значение поля документа (LotusScript)? - PullRequest
2 голосов
/ 29 января 2010

В новой форме LotusNotes у меня есть поле вычисляемого значения ("NewOrdProdUID"), которое правильно установлено с уникальным идентификатором другого существующего документа. Я хочу изменить значение поля «NewProdAvail» в существующем документе с помощью LotusScript. Я пробовал с этим:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
 Dim session As NotesSession
 Dim db As NotesDatabase
 Dim ws As New NotesUIWorkspace
 Dim uidoc As notesUIDocument
 Dim odoc As notesDocument 

 Set session = New NotesSession
 Set db = session.CurrentDatabase
 Set uidoc = ws.CurrentDocument

 Set odoc = db.GetDocumentByUNID(uidoc.FieldGetText("NewOrdProdUID"))
 Call odoc.FieldSetText("NewProdAvail", "0")
 Call odoc.Save(True, True)
End Sub

Однако значение поля "NewProdAval" остается прежним (в моем случае 3, а не 0). Пожалуйста, помогите мне!

Ответы [ 4 ]

3 голосов
/ 29 января 2010

Странно, похоже, вы тоже должны получить ошибку. Вы вызываете интерфейсный метод для NotesUIDocument для своего объекта NotesDocument (odoc), а класс NotesDocument не имеет метода с именем «FieldSetText». Это должно решить проблему:

Вместо вызова odoc.FieldSetText ("NewProdAvail", "0"), попробуйте это

Call odoc.ReplaceItemValue("NewProdAvail", "0")

Надеюсь, это поможет!

1 голос
/ 29 января 2010

Класс NotesDocument не имеет метода FieldSetText. Вы можете использовать:

odoc.replaceItemValue ("NewProdAvail", "0")

или просто:

odic.NewProdAvail = "0"
0 голосов
/ 30 марта 2010

В предыдущих ответах рассказывается, как установить поле в внутреннем документе. Я думаю, что стоит упомянуть, как работают back-end и front-end.

При кодировании для клиента Lotus Notes необходимо помнить, что документ Notes имеет внешние и внутренние компоненты. В основном документы Notes в Lotus Client имеют версию внешней памяти и соответствующую версию внутренней памяти. Изменения должны распространяться на серверную часть во время Querysave, а затем фиксировать изменения, внесенные вами через интерфейсную программу.

Поскольку предыдущие ответы показывают, как напрямую изменить внутренний документ, вам также следует знать о свойстве «автозагрузка» в классе NotesUIDocument. Эта ссылка объясняет это хорошо. Другими вещами, которые могут «подделать» настройку значений полей, являются формулы в полях, которые влияют, и то, вычисляется ли поле или редактируется.

Надеюсь, это поможет.

0 голосов
/ 29 января 2010

Я использовал

Set Item = odoc.replaceItemValue ("NewProdAvail", restAvailable)
Call odoc.Save(True, True)

и это сработало. Спасибо ребята за помощь!

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