这是我的代码:
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。 (覆盖......)
答案 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