1

我是 Lotus Notes 编程的新手,我需要您的建议和帮助。

我的主要形式包含一个tablewith8 rows2 columns。(有16 cells)每个单元格都有一个numeric field。我的字段名称是:

txt_n1txt_i1(第一行)

txt_n2txt_i2(第二行)

……

txt_n8txt_i8(第 8 行)

我想做的是:

我有一个vwMarketing只用一列调用的视图。我希望这个视图只显示那些文档。其中至少有一行或多行,其单元格包含相等的值。

所以,如果让我们说 txt_n4 = txt_i4 => OK

row(k)(其中 k=1..8):如果单元格 1 的值为 5,单元格 2 的值为 5 => OK。

该属性可能不止一行,重要的是至少存在一行,并且值不能为空。我希望我很清楚,谢谢!

PS:实际上,我想在列中的公式语句,所以如果它是OK =>“A”,如果不是=>“”(在视图属性中,我检查了Don't show empty categories:)

4

2 回答 2

2
  1. 如果视图中有少量文档,那么建议您使用选择公式排除条件错误的文档。
  2. 您可以在文档中添加计算项/标志,该字段将计算文档是否应显示在视图中。那么你不会有性能问题。IE

但是您需要的代码应该看起来像那样(这将检查文档是否可以在视图中显示),如果您在视图中使用它 - 毕竟选择 _res = 1 否则如果您决定在文档中使用标志(以提高性能)然后选择您的项目 = 1

   _res := 0;
    @For(i:=1;i<=8;i:=i+1;
        _post := @Text(i);
        _txt_n := @GetField("txt_n"+_post);
        _txt_i := @Text(@GetField("txt_i"+_post));
        @If(    (_txt_n=_txt_i) & (_txt_n!=""); 
                @Do(    _res := 1; i:=9);
                0
        )
    );
    _res
于 2013-02-25T11:51:22.253 回答
0

我会稍微不同地解决它:

  1. 在表单上创建一个名为“DisplayInView”(或类似名称)的隐藏文本字段。
  2. 修改视图选择:SELECT DisplayInView="Yes"
  3. 将以下代码添加到表单的 PostSave 事件中:

    Dim thisdoc As NotesDocument
    Dim isSame As Boolean
    isSame = False
    Set thisdoc = source.Document
    '*** Loop through all fields in document and compare the field pairs
    Forall i In thisdoc.Items
        If Left(i.Name,5) = "txt_n" Then
            If i.Text = thisdoc.GetItemValue( Replace(i.Name,"txt_n","txt_i") )(0) Then
                isSame = True
                Exit Forall
            End If
        End If
    End Forall
    If isSame Then
        Call doc.ReplaceItemValue("DisplayInView","Yes")
        Call doc.Save(True,False)
    End If
    

我还没有测试过它,但我相信它应该可以工作。

于 2013-02-25T22:24:47.583 回答