2

新しい LotusNotes フォームには、計算値フィールド ("NewOrdProdUID") があり、別の既存のドキュメントの一意の ID が正しく設定されています。LotusScript を使用して、既存の文書の「NewProdAvail」フィールドの値を変更したいと考えています。私はこれで試しました:

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」の値は同じままです(私の場合は0ではなく3です)。私を助けてください!

4

4 に答える 4

3

奇妙なことに、あなたにもエラーが発生するはずです。NotesDocument オブジェクト (odoc) で NotesUIDocument のフロントエンド メソッドを呼び出していますが、NotesDocument クラスには「FieldSetText」というメソッドがありません。これで問題が解決するはずです:

Call odoc.FieldSetText("NewProdAvail", "0") の代わりに、これを試してください

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

お役に立てれば!

于 2010-01-29T01:50:21.123 に答える
1

前の回答では、バックエンドドキュメントにフィールドを設定する方法を説明しました。バックエンドとフロントエンドがどのように機能するかについて言及する価値があると思います。

Lotus Notesクライアント用にコーディングする場合、Notesドキュメントにはフロントエンドコンポーネントとバックエンドコンポーネントがあることを覚えておく必要があります。基本的に、Lotus ClientのNotesドキュメントには、フロントエンドメモリバージョンと対応するバックエンドメモリバージョンもあります。変更は、クエリの保存中にバックエンドに伝播してから、フロントエンドを介して行った変更をコミットする必要があります。

前の回答はバックエンドドキュメントを直接変更する方法を示しているため、NotesUIDocumentクラスの「autoload」プロパティにも注意する必要があります。このリンクはそれをよく説明しています。フィールド値の設定を「改ざん」できるその他の事項は、影響を受けるフィールドの数式、およびフィールドが計算されているか編集可能かどうかです。

お役に立てれば。

于 2010-03-30T12:58:24.273 に答える
1

NotesDocument クラスには FieldSetText メソッドがありません。以下を使用できます。

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

または単に:

odic.NewProdAvail = "0"
于 2010-01-29T03:19:25.423 に答える
0

使った

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

そしてそれはうまくいきました。助けてくれてありがとう!

于 2010-01-29T16:38:05.080 に答える