我使用以下代码创建一个新的个人资料文档:
Set doc = db.Createdocument()
doc.Form = "SMBPrivateProfile"
Call doc.Computewithform(True,True)
Call doc.Save(True, False)
但是每当我想通过@GetProfileField
读取一个字段时,我得到一个空字符串,即使我想要读取的字段有一个默认值。
开放后&手动保存文档一切正常。
进一步详情:
我改进了一个应用程序并点击了Application --> Replace Design...
。新版本在配置文件中包含一个新字段。读取其中一个新字段时,结果为空字符串。当读取同一文档中的“旧”字段时,结果是预期的字符串。
e.g:
MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "OLD_FIELD"; @ThisName))
- >将导致:“这是一个花哨的旧默认值”
MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "NEW_FIELD"; @ThisName))
- >将导致:“”(而不是“这是一个奇特的新默认值”)
答案 0 :(得分:3)
这不是档案文件。要创建个人资料文档,请使用:
db.GetProfileDocument("SMBPrivateProfile");
除了个人资料名称之外,您还可以为唯一键添加第二个参数。
还要考虑您是否真的想要使用个人资料文档。它们被高度缓存,在任何视图中都不可见。
答案 1 :(得分:0)
如果我正确地读你,你似乎已经更新了表格并添加了一个带有默认值公式的新字段。然后,您正在阅读现有文档。执行此操作时,添加到表单的新字段尚不存在。在您执行某些操作以强制它们应用之前,新字段和公式不会应用于现有文档。
如果它是常规文档(如原始代码所示),您只需在Notes客户端中打开文档,编辑并重新保存即可。这将创建NEW_FIELD并赋予其价值。如果有很多这些文档,您可以通过@Command([ToolsRefreshAllDocs])
或@Command( [ToolsRefreshSelectedDocs])
编写一个简单的公式代理来执行此操作。
如果它是个人资料文档(根据@ Panu的anser的响应链),那么在执行替换设计之后,您将必须编写代理以使用db.getProfileDocument
使用doc打开现有的配置文件。 ReplaceItemValue(“NEW_FIELD”;“新值”)。