Lotus notes 如何使用lotusscript获取表单的基础视图

Lotus notes 如何使用lotusscript获取表单的基础视图,lotus-notes,lotus-domino,lotusscript,Lotus Notes,Lotus Domino,Lotusscript,我是lotusscript的新手。我们有一个传统的lotusnotes/domino系统。我们需要将数据从LotusNotes迁移到oracle。LotusDomino的数据模型与oracle的数据模型完全不同。因此,我们正在根据LotusNotes表单创建一个关系表。我可以使用lotusscript访问视图programmaticaly。但是我无法使用lotusscript获取与Notes表单相关联的视图。谁能给我一个代码片段或者解释一下from和view之间的关系?我需要迁移与单个表单关联的

我是lotusscript的新手。我们有一个传统的lotusnotes/domino系统。我们需要将数据从LotusNotes迁移到oracle。LotusDomino的数据模型与oracle的数据模型完全不同。因此,我们正在根据LotusNotes表单创建一个关系表。我可以使用lotusscript访问视图programmaticaly。但是我无法使用lotusscript获取与Notes表单相关联的视图。谁能给我一个代码片段或者解释一下from和view之间的关系?我需要迁移与单个表单关联的数据,即使它与多个notes视图连接

下面的代码段可以工作吗

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中,视图使用选择条件进行操作。这些标准可以引用表单(但不必)。例如,假设您创建了一个名为“HelpTicket”的表单。然后,可以使用“视图选择公式”选择使用此表单创建的任何文档,以便在视图中显示,如下所示:

…然后可以添加视图中的列,以通过引用帮助通知单表单上列出的字段从选定文档中提取数据

我怀疑您对表单/视图关系感到困惑的地方在于迁移数据的想法:表单既是关联数据的模式定义,也是在文档基础上呈现数据的一种方式。理论上,数据可以通过注释中的任意数量的表格“定义”来表示,即数据和表示是完全独立的,但实际上,表格和引用表格的文件之间存在着某种关系

另一方面,可能值得一提的是,LotusNotes不是一个关系数据库系统,它可以更容易地描述为基于文档的数据库,或“NoSQL”的一种形式

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


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

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

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


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

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

正如其他答案所提到的。通过Notes SQL访问Notes数据相当简单,对于精通SQL的用户来说更容易“摸索”。您将得到一个基于SQL select查询的答案表。对于熟悉Notes/LotusScript的用户来说,扫描视图和编写代理以将数据导出为CSV值,以便稍后导入SQL非常简单。您甚至可以使用内置视图导出来获取CSV数据表,然后将其导入SQL


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

如果您添加了代码段,则不会起作用,不会。它只会对数据库进行全文搜索,查找任何包含文本“Form=Help Ticket”的文档,该文本不会返回任何匹配项。从语法上说,我认为它也不起作用,您有一个
For
构造,以
End-Forall
结尾(哦,不要使用
GetNthDocument
,它真的很昂贵!)感谢您的好主意。我可以将一些表格导出到没有任何附件的excel。导入NSF文件时出现一般ODBC错误。因此,我的最佳选择是对带有附件的表单使用lotusscript。您能给我一个可以访问表单数据的lotusscript的代码片段吗?Domino Designer帮助提供了一些迭代表单集合的示例代码
SELECT Form="HelpTicket"