在 Notes 应用程序中创建文档后,我正在将信息从该文档移动到 postgres 数据库。将数据传输到 postgres 的代理使用 doc 中的字段作为关键字段。
我遇到了以下问题:
- 如果我通过 Notes 客户端创建文档,则传输不会出现问题。- 如果我从代理(处理传入的电子邮件并生成有效的键字段值)创建文档,则传输失败并出现空键错误。如果我然后打开并保存文档,则传输成功。
然而,我的关键字段值不为空。我可以在视图、文档和文档属性中看到它。
任何关于我如何能够解决这个问题的想法都将不胜感激。谢谢!克莱姆
==============================
感谢 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 从 doc 到 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.