Lotus Notes - 仅将.OpenFileDialog中的一个值附加到字段中

时间:2013-09-10 08:10:08

标签: field lotus-notes

这是我的代码:

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 =>路径包含Path1。在此之后,选择Path2 =>路径包含Path2。 (覆盖......)

1 个答案:

答案 0 :(得分: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