2015-10-17 38 views
0

我在計算顯示文本字段時出現錯誤。 對於每個文檔,我在編輯模式下打開它並重新保存以糾正它。 我在許多數據庫和文檔上都有同樣的問題。 我試圖使用uiworkspace中的EditDocument函數在整個基礎上使用代理更正它。如下:使用預定代理刷新蓮花文檔

Option Public 
Option Declare 

Sub Initialize 

Dim session As New NotesSession 
Dim db As NotesDatabase 
Dim col As NotesDocumentCollection 
Dim view As NotesView 
Dim doccand As NotesDocument 
Dim doc As NotesDocument 
Dim result As Integer 
Dim uiwks As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 

Set db = session.Currentdatabase 
Set col = db.Unprocesseddocuments 
Set docCand = col.getfirstdocument 

On Error Resume next 

While Not docCand Is Nothing 
    Set uidoc = uiwks.Editdocument(True, docCand) 
    Call uidoc.save 
    Call uidoc.close(True) 
    Set docCand = view.getNextdocument(docCand) 
Wend 

End Sub 

此功能只有從我的Notes客戶端啓動它時才解決問題。它不能用作多米諾服務器中的計劃任務。我嘗試使用沒有uiworkspace的computewithform,它也不起作用。 任何人都有一種方法來刷新,並在預定代理中編輯和保存文檔?

+0

如果它是計算顯示的,它不會被保存,每次有人打開文檔進行讀取時都會重新計算。如果你已經修正了這個公式,沒有人會看到這個錯誤,我真的沒有看到提醒。 –

+0

這是計算的顯示字段,它保存在最後一次保存文檔。 我必須切換到編輯模式才能看到更正。 – user3082877

+0

計算字段與計算顯示字段之間的差異是爲顯示字段計算的值不會保存到文檔,並且只有在打開文檔進行顯示時纔會計算。 –

回答

3

計算用於顯示文本字段

領域的這種類型的未保存的文件中,它是一種相同的事,作爲一個計算文本。

關於您的解決方案:

NotesUIWorkspace和EditDocument不能在在後臺運行的時間表劑的用途(即在服務器上)(這就是爲什麼當你運行LN它的作品),但只有從UI。

您需要做的是使用NotesDocument中的ComputeWithForm方法。它將在後臺刷新文檔(無需打開/保存)。

While Not docCand Is Nothing 
    Call docCand.ComputeWithForm(False, False) 
    Call docCand.save 
    Set docCand = col.getNextdocument(docCand) 
Wend 

請注意,在您的腳本中存在一個問題,您正嘗試從未初始化的視圖中獲取下一個文檔。我想你想用col代替。

Set docCand = view.getNextdocument(docCand) 
1

計算顯示字段不應被保存。你不應該刷新。

只有一種情況是我知道的,其中顯示字段的計算值被保存。當表單上的字段最初設計爲常規計算字段時,會發生這種情況,但有人將其更改爲計算以供顯示。原始計算的字段被保存爲存儲文檔中的項目,並且即使在字段更改爲合成的Notes計算之後,它仍將繼續查看保存的值。如果這就是發生了什麼,那麼你真正想要做的是運行一個代理刪除保存的值。例如,

FIELD myFieldThatUsedToBeComputedButIsNowCFD := @DeleteField;