いいね!数

0

閲覧数
595

初めて質問させていただきます。よろしくお願い致します。

本題です。jQueryからOLEでLotusScriptを利用した場合、数値型、文字列型の文書フィールドには正確な型でデータが設定できるのですが、

日付/時刻型のフィールドには正確な型でデータが設定できず困っています。

公式リファレンスには「LotusScript には日付/時刻のデータ型がなく、 日付/時刻の値を持つ変数を宣言できません。」とあります。

関数(@関数も含みます)の使用が推奨されている記載もありましたが、OLEでは関数は使えない...と思っています。

LotusScriptでは日付/時刻型のデータを設定することはできないのでしょうか?

 

最近Notesに触れ始めたばかりで知識に乏しく、お力添えいただけないかと思います。

以下、書き進めているコードです。NotesDateTimeクラスを使用して調査を進めています。

 

var notesSession = new ActiveXObject("Notes.NotesSession");
var notesDatabase = notesSession .GetDatabase("serverName","dbFileName");
var notesDocument = notesDatabase.CreateDocument;

var setDateTime = notesSession.CreateDateTime("18/08/01 01:00 PM");
var setDate = notesSession.CreateDateTime("18/08/01");
var setTime = notesSession.CreateDateTime("01:00:00");

notesDocument .ReplaceItemValue("DATETIME",setDateTime);
notesDocument .ReplaceItemValue("DATE",setDate);
notesDocument .ReplaceItemValue("TIME",setTime);

notesDocument.Save(true,true);
サーバー情報: | クライアント情報:Windows78.5.3InternetExplorer11 | 
カテゴリ:アプリ開発 - その他 (Compositなど) | タグ:
  | 質問日時:2018/01/26 1:14:27

回答・コメント

いいね!数

0

「正確な型」というのがどういう意味なのか分かりかねますが、
Notesの日付/時刻にはいくつかの種類があります。
1.日付のみ

2.時刻のみ

3.日付と時刻

4.その他(時刻の範囲等・・・)


このうち、1.2.が質問に該当するものと推測して回答します。

 

NotesDateTimeで日付や時刻をセットしても日付と時刻の両方がセットされます。

そこで、SetAnyTimeメソッド(日付だけにする)やSetAnyDateメソッド(時刻だけにする)を使います。

この状態で

NotesDocument.ReplaceItemValueを実行すれば、日付だけの値や時刻だけの値をセットすることができます。

 

XPagesでのケースになりますが、詳細はこちらのリンクを呼んでいただくと理解が深まると思います。

http://www.ktrick.com/xpages-set-dete-only-time-only-field/

 

ちなみに、3.日付と時刻をセットするのであれば、LotusScriptのCDat関数でセットできると思います。

以上です。

回答日時:2018/01/26 16:06:04

いいね!数

0

どえむむさま

ご回答ありがとうございます。

表現がわかりにくく申し訳ありません。正確な型、というのはデータをセットする対象のフィールドと同じ型、という意味です。

今回セットする対象のフィールドは日付/時刻型ですが、セットするとデータが文字列型として認識されてしまい、困っているという状況です。

上記プログラムの内ReplaceItemValueでデータのセットを行っている部分がありますが、

各フィールドとどえむむ様が記載くださった日付/時刻型の種類と対応させますと

 

DATETIME・・・1.日付のみ

DATE・・・2.時刻のみ

TIME・・・3.日付と時刻

 

となります。

ご教授いただいたことと別ページを参考にDATEはSetAnyDateメソッド、TIMEはSetAnyTimeメソッドでそれぞれデータのセットを行いましたが、今までと同じく文字列型として認識されてしまい、日付/時刻型でセットができませんでした。

また、OLEで利用しているのでCDat含め関数は使用できないと思っているのですが、何か使用する方法はあるのでしょうか?

Evaluate メソッドもCOMのみのサポートということなので・・・

 

ご回答よろしくお願い致します。

回答日時:2018/01/28 18:33:23

いいね!数

0

Excel VBAを使って同じようなことをやってみたところ、

確かに日付/時刻型だけセットできませんでした。

代わりにDateValue関数を使ってやってみたところ、日付/時刻でセットすることができました。

ということで、

 Call doc.replaceitemvalue("DATETIME", DateValue("セットしたい日時の文字列"))

ではどうでしょうか?

ただし、Excel VBAでの実行結果なので、保証はできかねます。

回答日時:2018/01/29 16:00:04

いいね!数

1

ヘルプで CreateDateTime を見てみると NotesDateTime オブジェクトを取得すると書かれています。
なので Notesの日付形式を渡すのであれば、下記のようにしないといけないのでは。

notesDocument .ReplaceItemValue("DATETIME",setDateTime.LSLocalTime);
notesDocument .ReplaceItemValue("DATE",setDate.LSLocalTime);
notesDocument .ReplaceItemValue("TIME",setTime.LSLocalTime);


回答日時:2018/01/30 9:35:54