【问题标题】:Display all Fields from a Form in a View in Lotus Script or Lotus Formula在 Lotus Script 或 Lotus 公式的视图中显示表单中的所有字段
【发布时间】:2016-02-09 09:05:10
【问题描述】:

是否有任何简单的方法可以创建包含表单中所有可用字段的视图?

我有一个包含 100 多个字段的表单,创建包含所有字段的视图将花费太多时间。目的是在视图中导出数据。

【问题讨论】:

    标签: lotus-notes lotus-domino lotus


    【解决方案1】:

    您可以使用NotesDatabase.CreateView 方法创建View,并使用NotesView.CreateColumn 为该View 创建列。 Form 中所有字段的列表可以从NotesForm.Fields 属性中获取。 Form 本身可以从 NotesDatabase.GetForm 方法中获得。
    这是一个例子:

    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim form As NotesForm   
    Dim view As NotesView
    
    Set db = ses.CurrentDatabase
    
    formName$ = "YourFormName"
    
    Set form = db.GetForm(formName$)
    
    Set view = db.CreateView(formName$ & "Fields", {Form = "} & formName$ & {"})
    
    Forall field In form.Fields
        Call view.CreateColumn(, field, field)
    End Forall
    

    【讨论】:

    • 谢谢,这或多或少起到了作用。虽然只有一个问题,但它循环正常,但我创建了重复的列。似乎当它到达底部时,它又从顶部继续,但不是整个形式。知道这是为什么吗?
    • 这种方法的一个问题是视图呈现文档中项目的内容,这可能与用于创建和/或显示文档的表单上的字段不同。 Computed for Display 字段不会出现在文档上,并且不在表单上的项目可能会通过表单或代理中的代码添加。
    • @CinNL1 您的代码有问题。您可以尝试使用Arrayunique 删除重复项:fields = Arrayunique(form.Fields) : Forall field In fields : Call view.CreateColumn(, field, field) : End Forall
    • @Newbs 问题是关于简单的方法。当然,还有更复杂的方法可以考虑Computed for Display 字段甚至Computed Subform 字段。
    【解决方案2】:

    您可以打开使用表单创建的文档并遍历 NotesItems。在那里您可以获取字段名称。

    代码可能如下所示:

    Dim field List As String
    
    Forall i in doc.Items
        field(i.Name) = i.Text
    End Forall
    

    您现在有一个列表,其中包含作为值的字段的文本表示形式和作为列表标签的字段名称。

    或者您可以在每个文档上执行此操作,然后像这样导出所有值。创建一个有 100 列的视图会创建一个巨大的视图索引。不是个好主意。

    【讨论】:

    • 但请注意:问题是关于一个表单上的所有字段,而一个文档中所有字段的列表是不一样的。
    • 这当然是真的。然后 CinNL1 可以遍历所有文档并执行相同的操作,将字段名称添加到全局列表中。
    【解决方案3】:

    也许你可以使用

    读取视图条目 使用此命令可以访问 XML 形式的视图数据,而无需外观属性,例如字体、列表分隔符、日期格式、HTML 设置、视图模板和框架重定向。 语法:

    http://Host/Database/ViewName?ReadViewEntries
    

    链接:http://www.ibm.com/developerworks/lotus/library/ls-Domino_URL_cheat_sheet/

    【讨论】:

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