lotus-notes - @command([ToolsRefreshAllDocs]) 在 Lotus Notes 中不起作用
问题描述
我更改了我的 lotus notes 数据库中几个表单字段的属性。数据库中有 1000 多个文档。如果我打开每个文档然后保存并关闭它,为了反映该字段属性的更改,该字段正在更新。但是,对每 1000 多个文档手动执行这不是一个可行的解决方案。
我对此进行了调查,发现 @command([ToolsRefreshAllDocs]) 可以刷新视图中的所有文档。我用这个公式创建了一个代理,并尝试从视图中运行它。不幸的是,它不起作用并给出错误“文档留给处理 xxx,NoteID 导致错误 = xxx”。我试图查找有关此错误的任何信息,但找不到任何信息。
谁能帮我解决这个问题,让我知道为什么会出现这个错误以及如何解决这个问题。或者有没有其他方法可以刷新视图中的所有文档,以便为所有文档更新字段。
谢谢
解决方案
您为视图中文档的表单上的字段设置了输入验证公式或计算值公式。刷新导致该公式执行,但它失败了。这可能与您更改的属性有关,导致依赖于字段的公式对于某些文档失败,即使它在您手动测试的文档中工作正常。它可能与您更改的属性无关,因为它可能只是在您进行更改之前刷新失败的文档。
这很难手动追踪。我在 Notes 早期使用的一种技术是创建两个文件夹。将一半文档移至一个文件夹,另一半移至另一个文件夹。在这两个文件夹中尝试刷新代理。如果它们都失败了,则每个文件夹中至少有一个文档存在问题。再创建两个文件夹并分成四组,然后在每个文件夹中再次尝试刷新。继续划分文档并刷新。每当您获得一个可以正确运行刷新代理的文件夹时,您就知道该文件夹中的所有文档都很好。继续划分和刷新出现错误的文件夹,直到最终只剩下一个文件夹中的一个文档。
不用说,当您拥有包含数千个文档的大型数据库时,这种蛮力分而治之的方法并不有趣。幸运的是,有更好的方法。您可以编写一个 LotusScript 代理,循环浏览您视图中的文档并调用 doc.ComputeWithForm(true,true),检查布尔返回值并设置一个项目值(例如,对于该值所在的每个文档,debugItemFailed 为“1” false. 然后使用 SELECT debugItemFailed = "1" 为自己创建一个新视图,您将看到所有存在验证或计算域问题的文档。
顺便说一句,这也是我很久没有在任何生产数据库中使用 [ToolsRefreshAllDocs] 的原因。我总是使用调用 ComputeWithForm 的 LotusScript 代理。
推荐阅读
- django - 帖子列表页面,Django Wagtail
- reactjs - 登录后在哪里存储用户信息:React JS
- python - Scrapy不返回任何结果
- docker - Docker Running 在容器内运行,但无法通过浏览器访问
- php - WordPress 5.6 错误编辑主题 header.php “无法与站点通信以检查致命错误,因此恢复了 PHP 更改。”
- python - 如何从两个数组中找到匹配的元素和索引?
- windows-10 - Coral Edge TPU USB 加速器驱动安装失败
- python - 为什么使用 pyinstaller 创建的使用语音识别的 .exe 文件没有运行?
- python - views.py 文件的 Django 最佳实践?
- angular - 如何将 js 文件作为 Angular 库的一部分导入