Notes アプリでドキュメントを作成した後、そのドキュメントから postgres データベースに情報を移動しています。データを postgres に転送するエージェントは、ドキュメント内のフィールドをキー フィールドとして使用します。
次の問題が発生しています。
- ノーツ クライアント経由でドキュメントを作成すると、転送は問題なく行われます。- エージェント (受信メールを処理し、有効なキー フィールド値を生成するエージェント) からドキュメントを作成すると、null キー エラーで転送が失敗します。ドキュメントを開いて保存すると、転送は成功します。
ただし、キー フィールドの値は null ではありません。ビュー、ドキュメント、およびドキュメントのプロパティで確認できます。
どうすればこれを理解できるかについての考えをいただければ幸いです。ありがとう!クレム
============================
Torsten さん、返信ありがとうございます。それは有り難いです。実際、コードにはそれほど多くはありません。これがその一部です。「x.LogNumber」は文字列を返します。形式は T1234CP のようなものです。結局、computeWithForm を追加し、IsSummary を設定しましたが、必要ではないと思います。
atdoc.logNumber = x.LogNumber
Call atdoc.computeWithForm(false, false)
Dim lnItem As NotesItem
Set lnItem = atDoc.getfirstitem("logNumber")
lnItem.IsSummary=True
Call atdoc.save(True, False)
===================================== ドキュメントが作成されると、転送するエージェントが実行されますodbc を介して、ドキュメントから postgres db へのいくつかのデータ:
'.. define the 'key field' to be use in the connection.select call
Dim selectFldLst As New LCFieldList
'.. add the key field name to the LCfieldList object.
Call selectFldLst.Append(NotesKeyFieldName, LCTYPE_TEXT)
'.. set this field to be the key field.
selectFldLst.Getfield(1).flags = LCFIELDF_KEY
Set Notes_LCFieldList = New LCFieldList ' flSrc
Set odbcDB_LCfieldList = New LCFieldList ' flDest
'.. get the key of the doc to transfer.
Set docWithTransferID = docsToTransferViewEntry.Document
selectFldLst.LogNumber = Trim(docWithTransferID.stid(0))
count = Notes_LCConnection.Select(selectFldLst, 1, Notes_LCFieldList)
^--- This selects the fields from the Notes document. This is where it fails. It returns 0 for 'count'. It should return 1. If I save the document manually, it works.