【问题标题】:How to get the underlying view of a form using lotusscript如何使用 lotusscript 获取表单的底层视图
【发布时间】:2010-10-05 09:12:54
【问题描述】:

我是 lotusscript 的新手。我们有一个传统的莲花笔记/多米诺骨牌系统。我们需要将数据从 lotus notes 迁移到 oracle。 Lotus domino 的数据模型与 oracle 的数据模型完全不同。因此,我们正在为每个 Lotus notes 表单 创建一个关系表。我可以使用 lotusscript 以编程方式访问 视图。但我无法使用 lotusscript 获得与 Notes 表单 相关联的 视图。谁能给一个代码sn-p或解释from和view之间的关系?我需要迁移与单个表单关联的数据,即使它与多个笔记视图相连。

下面的代码 sn-p 会起作用吗?

Dim session As New NotesSession
Dim db As NotesDatabase
Dim notesDocumentCollection As NotesDocumentCollection

Set db = session.CurrentDatabase
Set notesDocumentCollection = db.FTSearch( """Form=Help Ticket""", 0)

For i = 1 To notesDocumentCollection.Count    
  Set doc = notesDocumentCollection.GetNthDocument( i )  
  ' process each document 

End Forall

【问题讨论】:

    标签: lotus-notes lotus-domino lotusscript


    【解决方案1】:

    在 Lotus Notes 中,视图使用选择标准进行操作。这些标准可以参考表格(但不是必须)。例如,假设您创建了一个名为“HelpTicket”的表单。然后可以使用“视图选择公式”选择使用此表单创建的任何文档以在视图中显示,如下所示:

    SELECT Form="HelpTicket"
    

    ...然后可以通过引用 HelpTicket 表单上的字段来添加视图中的列以从所选文档中提取数据。

    我怀疑您对表单/视图关系感到困惑的地方在于迁移数据的想法:表单既是其关联数据的架构定义,也是在文档上呈现该数据的一种方式-以文件为基础。从理论上讲,数据可以通过 Notes 中的任意数量的表单“定义”来呈现,即数据和呈现是完全分开的,但实际上,表单和引用它的文档之间存在关系。

    顺便说一句,可能值得一提的是,Lotus Notes 不是关系数据库系统,它可以更容易地描述为基于文档的数据库,或“NoSQL”的一种形式。

    现在,回到视图:然后这些视图通过列、类别和基于基础数据的简单计算呈现数据(视图列可以简单地引用字段值,也可以通过专有的 Lotus 对该值执行基本操作注释公式语言)。

    因此,简而言之,您需要迁移的数据就是您的 Lotus Notes 文档。这些视图有点无关紧要,尽管您可能希望复制它们在报告/可视化所述数据方面提供的功能。

    【讨论】:

    • 重新添加 sn-p,这将不起作用,不。它所做的只是对您的数据库进行全文搜索,查找任何包含文本“Form=Help Ticket”的文档,这些文本根本不会返回任何匹配项。从语法上讲,我认为它也不会起作用,你有一个 For 构造,以 End Forall 结尾(哦,永远不要使用 GetNthDocument,它真的很贵!)
    【解决方案2】:

    我建议您完全避免使用 Lotusscript。迁移数据后,听起来您并没有使用此 Notes 数据库,因此您唯一需要做的就是将数据取出。如果您使用 NotesSQL 驱动程序 (http://www.ibm.com/developerworks/lotus/products/notesdomino/notessql/),您可以更轻松地做到这一点

    为您的数据库配置驱动程序后,只需使用 Excel 或 Access 连接到数据库并提取数据。然后您可以轻松正确地重新格式化数据,以便将其导入 Oracle。

    SQL 驱动程序可以基于 Form 提取数据,因此您可以将所有 HelpTicket 文档(及其项目)放入 Access 中的表格或 Excel 中的工作表中。

    【讨论】:

    • 感谢您的好主意。我可以将一些表格导出到没有任何附件的 excel 中。导入 NSF 文件时出现一般 ODBC 错误。所以,我最好的选择是使用 lotusscript 来处理带有附件的表单。你能给我一个可以访问表单数据的lotusscript代码sn-p吗?
    • Domino Designer 帮助提供了一些示例代码,用于迭代 Notes 文档集合并将其附件提取到文件系统。这将是处理此类数据的最佳方法。
    【解决方案3】:

    一个迟到的答案,但它可能对某人有所帮助:当尝试在 Notes 和 SQL 之间分配类似的“术语”时,将 Notes 视图视为 SQL 表,将 Notes 文档视为 SQL 记录,将 Notes 代理/事件视为SQL 触发器。注释 具有排序列的视图类似于具有 SQL 索引的表。已排序的 Notes 列定义了索引。要“查询”一个 Notes 视图,您可以扫描视图(相当于未索引的 SQL 表扫描),或者进行基于键的查找(选择 where y=x)。没有查询优化,您必须选择如何查询视图。这些术语是近似值。注释视图更像是 SQL 中的物化视图,而其他地方提到的文档是无模式记录,可以包含不同的字段和数据(但通常它们不会)。

    正如其他答案所提到的。通过 Notes-SQL 访问 Notes 数据相当简单,并且对于精通 SQL 的用户来说更容易理解。您将获得一个基于 SQL 选择查询的答案表。对于精通 Notes/LotusScript 的用户,扫描视图并编写代理以将数据导出为 CSV 值以便稍后导入 SQL 是很简单的。您甚至可以使用构建的视图导出来获取 CSV 数据表,然后可以将其导入 SQL。

    Notes 的一个主要“问题”是单个字段或视图列中的数据可能存在“类型问题”,具体取决于开发人员的好坏程度。例如,在一行中,数据可能是真实日期,而在另一行中,它可能表示为“文本日期”-除非您处理这种可能性,否则这可能会阻塞导入例程。其他问题是分隔符和字段长度; Notes 不使用明确的字段大小,因此某些字段可能比预期的要大,并且包含的​​分隔符会阻碍您的 SQL 导入。还有其他问题需要解决。为了解决很多这些问题,如果可能的话,为您要迁移的每个表单创建一个视图,将每个字段放在视图中,添加公式以在必要时清理数据,并将每个视图导出为 CSV 并将其视为 SQL表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      相关资源
      最近更新 更多