トラブルシューティング
ドミノ デザイナー
getItemValue を使って日時の値と日付の範囲を取得する

ロータススクリプトの NotesDocument クラスと Java の Document クラスの getItemValue メソッドは、範囲を示す最初と最後の日時を個別の日時値として返します。
たとえば、DateTime フィールドに 1:00-10:00 という範囲が入力されているとき、Document.getItemValue は範囲を返さずに、個別の日時値として 1:00;10:00 を返します。Java では、まず getFirstItem メソッドを使って、操作したい DateTime アイテムを取得し、次に getText プロパティを使ってアイテムの内容をプレーンテキストとして取り出します。これを解析すると、フィールドに含まれる個々の日時値と日付の範囲が得られます。ロータススクリプトでは、GetFirstItem メソッドと Text プロパティを使って同じ処理を行います。
例:
1. 次の Java のサンプルは、getFirstItem と getText メソッドを使って取得した DateTime フィールドの内容を解析します。それぞれの日時値と日付の範囲は区切り記号によって識別されます。ハイフン (-) は日付の範囲を示す最初と最後の日時の値を区切るのに使われ、セミコロン (;) は日時の値どうし、または日時と日付の範囲を区切るのに使われます。この例では、日時の値が最初に返され、その後で日付の範囲が返されます。
import java.util.Vector;
import java.util.Enumeration;
public class DTParser {
private int posHyphen;
private int posSemicolon;
DTParser(int iHyphen, int iSemicolon)
{
setPosHyphen(iHyphen);
setPosSemicolon(iSemicolon);
}
private void setPosHyphen(int iHyphen)
{
posHyphen = iHyphen;
}
private void setPosSemicolon(int iSemicolon)
{
posSemicolon = iSemicolon;
}
public void resetPos(int iHyphen, int iSemicolon)
{
setPosHyphen(iHyphen);
setPosSemicolon(iSemicolon);
}
public boolean isDateTimeRange(String sDateTime)
{
posHyphen = sDateTime.indexOf("-", posHyphen);
posSemicolon = sDateTime.indexOf(";",
posSemicolon);
// 個別の DateTime エントリを見つける
if ((posSemicolon < posHyphen) &&
!(posSemicolon == -1))
{
posHyphen = 0;
posSemicolon++;
return false;
}
// DateTime 範囲を見つける
if ((posHyphen < posSemicolon) &&
!(posHyphen == -1))
{
posHyphen++;
posSemicolon++;
return true;
}
}
// リストの最後にある DateTime 範囲
// を見つける
if (!(posHyphen == -1) && (posSemicolon ==
-1))
{
return true;
}
// 個別の DateTime エントリを見つける。
// この場合、後に DateTime 範囲が続かないか 、
// これが DateTime のリストの最後のエントリである。
if (posHyphen == -1)
{
return false;
}
return false;
}
public String assembleDTString(Vector vSchedule)
{
String sSchedule = new String("");
Object objDT;
Enumeration enumItems;
for (enumItems = vSchedule.elements();
enumItems.hasMoreElements();)
{
objDT = enumItems.nextElement();
sSchedule =
sSchedule.concat(objDT.toString()+",");
System.out.println("sSchedule="+sSchedule);
}
return
(sSchedule.substring(0,sSchedule.length()-1));
}
}
2. 次のロータススクリプトのサンプルは、GetFirstItem メソッドを使って DateTime フィールドからデータを取得し、Text プロパティを使ってフィールドの内容をプレーンテキストとして抽出します。ReplaceItemValue メソッドを使い、"ReturnValue" フィールドにデータを入力します。日付の範囲内のハイフンは、出力内で予約されています。
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim item As NotesItem
Set db = session.CurrentDatabase
Set collection = db.AllDocuments
Set doc = collection.GetLastDocument()
Set item = doc.GetFirstItem("DT")
Call doc.ReplaceItemValue("ReturnValue",item)
Call doc.Save(True,False)
-------------------------------------------------------------------------------------------------------------------------------------------
Web に接続している場合は 、 ここをクリックするとこの文書についてのコメントをロータスに送信できます。