0

XAgent スタイルのビューを Excel にすばやくエクスポートしています。しかし、最初に、XPage で選択した条件に一致するドキュメントの UNID を取得する必要があります。見つかったドキュメントの数を取得するボタンがあります。選択した値に基づいてドキュメントがあることを確認して確認しましたが、Web ブラウザーではアラートに常にゼロのドキュメントが返されます。今のところ、ボタンのコードは次のとおりです。

uifrom = getComponent("from_dtpicker").getValue(); // a date-time picker
uito = getComponent("to_dtpicker").getValue(); // a date-time picker
uitag = getComponent("tag_combox").getValue(); // a combobox

var from:NotesDateTime = session.createDateTime(uifrom);
from.setAnyTime();
var to:NotesDateTime = session.createDateTime(uito);
to.setAnyTime();

var vw:NotesView = database.getView("(Document View by Tag)");
var docUNIDarray:Array = []; // for the quick XAgent excel export later on

if (uitag == "All") {
    var vec:NotesViewEntryCollection = vw.getAllEntries();
} else {
    var vec:NotesViewEntryCollection = vw.getAllEntriesByKey(uitag, true);
}

var total:Number = 0;

var ve:NotesViewEntry = vec.getFirstEntry();
while (ve != null) {
    // document must have StartDate and EndDate
    if (ve.getDocument().hasItem("StartDate") && ve.getDocument().hasItem("EndDate")) {
        var vefrom:NotesDateTime = ve.getDocument().getItemValue("StartDate").elementAt(0);
        vefrom.setAnyTime();
        // as long as the StartDate is between the selected from and to
        if (vefrom >= from && vefrom <= to) {
            if (ve.getDocument().getItemValueString("StaffName") != "Company") {
                docUNIDarray.push(ve.getDocument().getUniversalID());
                total += 1; 
            }
        }
    }
    ve = vec.getNextEntry(ve);
}

view.postScript('alert("total:'+total+', from:'+from+', to:'+to+', tag:'+uitag+'")');

また、私が行った唯一の完全な更新は、ボタンをクリックしたときです。このページにはスコープ変数もありません。2 つの日時ピッカー、コンボボックス、およびボタン自体のみ。これについての説明はありますか?XPiNC で動作するため、コードが正しいことを確認しました。

取得したドキュメントの総数は 18 のはずです。.toJavaDate() を from、to、および vefrom に追加すると、間違った 10 個のドキュメントが取得されます。各ドキュメントの「StartDate」と「EndDate」の基になる値を確認しましたが、各値は 08/12/2013 12:00:00 PM ZE8 のような時刻/日付です。コード内の日付値を NotesDateTime に変換すると、すべてが同じ型になり、比較できるようになると思いますが、これについては、何が間違っていたのかまったくわかりません。

4

1 に答える 1

1

比較で時間コンポーネントを取り出す必要があります。それにはいくつかのオプションがあります。まず、ドキュメントではなくビュー エントリを追跡し、すべてのデータを列に配置します。日付値には文字列を使用します。

   @Text(@Year(startdate)*10000+@month(startdate)*100+@day(startdate)) 

別のアプローチは、Java Date メソッドを扱うことです

于 2013-08-27T06:40:32.577 に答える