Lotus notes 将datetime数组分配给Domino表单上的多值日期字段
我从视图访问文档,读取datetime字段,计算两个日期/时间值之间的天数,这两个值分为四类。在每个类别中,都有一个for循环,它将datetime值的数量添加到变量数组中。数组项在7到35之间。循环之后,我想将数组值分配给表单上的日期时间字段并保存文档。我使用的注释项目如下:Lotus notes 将datetime数组分配给Domino表单上的多值日期字段,lotus-notes,lotus-domino,lotusscript,Lotus Notes,Lotus Domino,Lotusscript,我从视图访问文档,读取datetime字段,计算两个日期/时间值之间的天数,这两个值分为四类。在每个类别中,都有一个for循环,它将datetime值的数量添加到变量数组中。数组项在7到35之间。循环之后,我想将数组值分配给表单上的日期时间字段并保存文档。我使用的注释项目如下: Dim nitem as Notesitem Set nitem = doc.ReplaceItemValue("Datefield", dtArray) 它不起作用。我使用了doc.ReplaceItemVa
Dim nitem as Notesitem
Set nitem = doc.ReplaceItemValue("Datefield", dtArray)
它不起作用。我使用了doc.ReplaceItemValue“Datefield,dtArray此字段也不起作用。代理运行后该字段为空。我声明了一个变量并将数组分配给变量,然后将变量分配给表单上的字段:
Dim var1 as variant
var1 = dtArray
doc.datefield = Var1
仍然无法在文档中看到分配给字段的数组值
这是主回路
Redim dateArray(0)
For i=0 to NumberofDays -1
set notesitem = dtitem.DateTimeValue
call notesitem.AdjustDay(i)
set dateArray(i) = notesitem
Redim preserve dateArray(i+1)
Next
doc.replaceitemvalue "Datefield", dateArray
call doc.save(false, true)
erase dateArray
为什么在代理运行后,文档中的日期字段为空?缺少什么?我应该如何更改此字段以获得结果。是否可以按如下方式向分配语句中添加删除器:
谢谢你当你在玩
NotesItem
和NotesDateTime
类时,我想你使用NotesItem
DateTimeValue
属性会更开心。这是读/写,并返回(或期望)一个NotesDateTime
对象
例如,如果您有一个名为“dt”的NotesDateTime
实例,那么您将如何将其写回名为“YourDT”的字段:
因此,您应该能够获取
NotesDateTime
对象数组,并使用此方法将其写回相关字段。这对于您来说是一个棘手的问题,因为您没有提供原始源代码。您尝试使用方法的方式有点奇怪
下面是您尝试执行的基本操作。DateTime字段有点棘手,但您可以使用变量数组进行设置
Dim i As Integer
Dim vDateArr() As Variant
Dim itDate As notesItem
' setup date array.
' .........
' .........
' Now get the date field to be updated from the document
Set itDate = doc.GetFirstItem("fieldName")
' loop through the array of values and make sure they're date time
For i=0 To numberOfDays - 1
' ensure that the array has date type values. V_DATE is a constant defined
' in LSConst.lss. V_DATE = 7, so you can still write the following line as
' If Datatype(vDateArr(i)) <> 7 then
If Datatype(vDateArr(i)) <> V_DATE Then
vDate = Cdat(vDateArr(i))
End If
vDateArr(i) = vDate
Next
' assign the array back onto the itDate field. Even if the field is not
' already a dateTime type. Assigning the array this way will make it so.
itDate.Values = vDateArr
Call doc.Save(True, False)
Dim i作为整数
Dim vDateArr()作为变量
将itDate设置为notesItem
'设置日期数组。
' .........
' .........
'现在从文档中获取要更新的日期字段
设置itDate=doc.GetFirstItem(“字段名”)
'循环遍历值数组并确保它们是日期时间
对于i=0到numberOfDays-1
'确保数组具有日期类型值。V_date是定义的常量
'在LSConst.lss.V_DATE=7中,因此您仍然可以将以下行作为
'如果数据类型(vDateArr(i))为7,则
如果数据类型(vDateArr(i))为V_日期,则
vDate=Cdat(vDateArr(i))
如果结束
vDateArr(i)=vDate
下一个
'将数组分配回itDate字段。即使该字段不是
'已经是dateTime类型。通过这种方式分配数组将使其成为dateTime类型。
itDate.Values=vDateArr
调用doc.Save(真、假)
在这种情况下,我发现最好使用原语,而不是对象。这里发生的事情是,我确保日期值存储为日期时间值。然后将数组分配给字段,然后保存文档。有多种方法可以做到这一点,但当您要推送特定类型的数组时,这是我首选的方法pe到字段中。如果可以发布原始代码,则更容易更正代码。从数组分配日期时间字段的最简单方法是:
SimpleDateFormat smdf = new SimpleDateFormat();
smdf.applyPattern("dd.MM.yyyy");
Vector dates = new Vector();
for (Date dt: dateArray) {
dates.addElement(smdf.formatter(dt));
};
doc.replaceItemValue("dateField", dates);
SimpleDateFormat smdf = new SimpleDateFormat();
smdf.applyPattern("dd.MM.yyyy");
Vector dates = new Vector();
for (Date dt: dateArray) {
dates.addElement(smdf.formatter(dt));
};
doc.replaceItemValue("dateField", dates);