字段返回空字符串

时间:2013-02-08 12:42:25

标签: profile lotus lotusscript

我使用以下代码创建一个新的个人资料文档:

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))

- >将导致:“”(而不是“这是一个奇特的新默认值”)

2 个答案:

答案 0 :(得分:3)

这不是档案文件。要创建个人资料文档,请使用:

db.GetProfileDocument("SMBPrivateProfile");

除了个人资料名称之外,您还可以为唯一键添加第二个参数。

还要考虑您是否真的想要使用个人资料文档。它们被高度缓存,在任何视图中都不可见。

答案 1 :(得分:0)

如果我正确地读你,你似乎已经更新了表格并添加了一个带有默认值公式的新字段。然后,您正在阅读现有文档。执行此操作时,添加到表单的新字段尚不存在。在您执行某些操作以强制它们应用之前,新字段和公式不会应用于现有文档。

如果它是常规文档(如原始代码所示),您只需在Notes客户端中打开文档,编辑并重新保存即可。这将创建NEW_FIELD并赋予其价值。如果有很多这些文档,您可以通过@Command([ToolsRefreshAllDocs])@Command( [ToolsRefreshSelectedDocs])编写一个简单的公式代理来执行此操作。

如果它是个人资料文档(根据@ Panu的anser的响应链),那么在执行替换设计之后,您将必须编写代理以使用db.getProfileDocument使用doc打开现有的配置文件。 ReplaceItemValue(“NEW_FIELD”;“新值”)。