1

这是我的代码:

Set item=doc.GetFirstItem("Path_1")
Set item1=doc.GetFirstItem("Path") ' Path is a multiple value field.

filenames = ws.OpenFileDialog(True, "Select",, "")
    If Not(Isempty(filenames)) Then
        Forall filename In filenames
            item1.AppendToTextList(filename) 'Path contains all the paths selected.
        End Forall
    End If

我想要做的是将从 OpenDialog 中选择的文件路径添加到 Path_1 中,但不是全部。例如:Path1 selected => Path 包含 Path1。在此之后,选择 Path2 => Path contains Path2。(覆盖...)

4

1 回答 1

2

首先:“OpenFileDialog”的第一个参数代表多选。如果您只想选择一个文件,那么只需将其设置为 false。

文件名仍然是一个数组,但只有一个条目。

第二:如果你想为一个项目设置一个值,那么使用 NotesDocument 的 replaceitemvalue 或者只是项目的 value 属性:

代替:

    Forall filename In filenames
        item.AppendToTextList(filename) 'Path contains all the paths selected.
    End Forall

和:

    item.values = filenames(0)

或者:

    doc.ReplaceItemValue( "Path", filenames(0) )

或者:

    item.text = filenames(0)

还有一些其他的事情:首先:Option declare在你的所有代码中使用它,它让生活变得更加轻松。然后:您定义 item1 两次:首先它采用项目“Path_1”,然后直接将项目“Path”分配给它......这是没有意义的,因为当它被分配给“Path_1”时,你甚至不使用项目...

只是在这里有一个完整的解决方案:对我来说,代码看起来像:

Dim ws as New NotesUIWorkspace
Dim doc as NotesDocument
Dim itemPath as NotesItem
Dim varFiles as Variant

Set doc = .... 'somehow set the doc
Set itemPath = doc.GetFirstItem( "Path" )

varFiles = ws.OpenFileDialog(False, "Select",, "")
If not isempty( varFiles ) then
    '- Just Write the LAST value into Path_1
    call doc.ReplaceItemValue( "Path_1" , varFiles(0) )
    '- Append the selected value to the path "History"
    itemPath.AppendToTextList( varFiles(0) )
End If
于 2013-09-10T08:28:15.380 回答