2

ビューからドキュメントにアクセスし、日時フィールドを読み取り、4つのカテゴリに分類される2つの日時値の間の日数を計算しています。各カテゴリには、バリアントの配列にいくつかの日時値を追加するforループがあります。配列エントリは7〜35です。ループの後、フォームの日時フィールドに配列値を割り当てて、ドキュメントを保存します。私は次のようにNotesアイテムを使用しました:

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

エージェントが実行した後、ドキュメントの日付フィールドが空白になるのはなぜですか?何が欠けている?結果を得るには、これをどのように変更すればよいですか。次のように、代入ステートメントにデレミターを追加することは可能ですか?

ありがとうございました

4

3 に答える 3

1

遊んでいるときNotesItemNotesDateTime授業をしているときは、この物件を利用することでもっと楽しくなると思いますNotesItem DateTimeValue。これは読み取り/書き込みであり、オブジェクトを返します(または期待します)NotesDateTime

たとえば、NotesDateTime「dt」というインスタンスがある場合、これを「YourDT」というフィールドに書き戻す方法は次のとおりです。

Dim itDT as NotesItem
Dim dt as New NotesDateTime
' Instantiate itDT and dt
...
Set itDT.DateTimeValue = dt

NotesDateTimeしたがって、オブジェクトの配列を取得し、このアプローチを使用して関連するフィールドに書き戻すことができるはずです。

于 2011-02-07T12:46:29.997 に答える
1

配列からdateTimeフィールドを割り当てる最も簡単な方法は次のとおりです。

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);
于 2012-08-05T08:47:09.240 に答える
0

元のソース コードが提供されていないため、これをトラブルシューティングするのは困難です。メソッドを使用しようとする方法は少し奇妙です。

以下は、あなたがやろうとしていることの基本的な方法です。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)

この場合、オブジェクトではなく、プリミティブを使用するのが最善だと思います。ここで起こっていることは、日付値が dateTime 値として保存されていることを確認していることです。次に、配列をフィールドに割り当ててから、ドキュメントを保存します。これを行うにはいくつかの方法がありますが、特定の型の配列をフィールドにプッシュする場合は、これが私の好みの方法です。元のコードを投稿できれば、コードを修正しやすくなります。

于 2011-02-09T05:45:25.900 に答える