0

我使用以下代码创建了一个新的配置文件:

Set doc = db.Createdocument()
doc.Form = "SMBPrivateProfile"
Call doc.Computewithform(True,True)
Call doc.Save(True, False)

但是每当我想读取一个字段时,@GetProfileField我都会得到一个空字符串,即使我要读取的字段具有默认值。手动打开并保存文档后,一切正常。


更多细节:
我改进了一个应用程序并点击了Application --> Replace Design.... 新版本在配置文件中包含一个新字段。当读取这些新字段之一时,结果是一个空字符串。在同一文档中读取“旧”字段时,结果是预期的字符串。

例如:

MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "OLD_FIELD"; @ThisName))

--> 将导致:“这是一个花哨的旧默认值”

MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "NEW_FIELD"; @ThisName))

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

4

2 回答 2

3

那不是个人资料文件。要创建配置文件,请使用:

db.GetProfileDocument("SMBPrivateProfile");

除了配置文件名称之外,您还可以为唯一键添加第二个参数。

还要考虑您是否真的想使用配置文件。它们被大量缓存并且在任何视图中都不可见。

于 2013-02-08T12:47:28.810 回答
0

如果我没看错,您似乎已经更新了一个表单并添加了一个带有默认值公式的新字段。然后,您正在阅读现有文档。执行此操作时,您添加到表单的新字段尚不存在。除非您采取措施强制应用新字段和公式,否则它们不会应用于现有文档。

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

如果它是一个配置文件(根据@Panu 的分析器的响应链),那么在您进行替换设计之后,您将必须编写一个代理来使用db.getProfileDocumentuse doc.ReplaceItemValue("NEW_FIELD";"new价值”)。

于 2013-02-08T22:27:07.227 回答