当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年9月14日月曜日

プロフィール文書が存在しているか否か その2

プロフィール文書が存在しているか否かでは、作成日と更新日、最終アクセス日を用いて、プロフィール文書がすでに存在しているかどうかのサンプルを書きました。

その中で、haruさんから、NotesDocumentクラスのHasItemを使ってはどうか?というコメントをいただいたので、試してみました。

サンプルはこんな感じです。
(前略)
set prodoc = db.GetProfileDocument( "ProfileForm" )
If Not ( prodoc.HasItem( "フィールド名" ) ) Then
 'プロフィール文書が存在しない場合の処理
End If
(後略)

結果、正しく動作しますね。

こちらの方が分かりやすいですね。ただ、プロフィール文書のフィールド名に依存してしまうので、汎用的ではなくなってしまいます。
自社で活用される場合、プロフィール文書のフィールド名をある程度共通化しておくと、便利に使えるのではないでしょうか。

2009年9月11日金曜日

5万アクセス到達!!

ついに5万アクセスを超えました。
すごいですねぇ。
4万アクセス!の記事を書いてから、およそ1ヶ月半ですね。
8月は夏ばて?で記事がアップ出来ていなかったというのに、このアクセス数。

なんなんでしょう?怖いくらいですね。
記事のアップがあまりにもないと、そのうちお叱りを受けるんじゃないかと・・・


まだまだノーツは奥が深いところがあるので、そう言ったところを調査して、記事をアップするようにしますので、これからも見てくださいね。



そうそう。ランキングサイトへの協力も忘れないでね。

2009年9月10日木曜日

プロフィール文書が存在しているか否か

ノーツDBの設定情報を格納するものとして、プロフィール文書を使っている方は多いのではないだろうか?

プロフィール文書は、特殊な文書で普通の文書と同じように扱うことはできない。
@コマンドで呼び出す場合、@Command([EditProfile])を使う必要があるし、
LotusScriptの場合、NotesDocumentクラスのGetProfileDocumentメソッドを使う必要がある。

@コマンドの場合、プロフィール文書用のフォームがノーツDBに存在している必要があるが、
LotusScriptの場合、そのフォームがなくても動作してしまうところがすごい。
(NotesDocumentクラスがバックエンドなので、仮想のフォームを設定できるため)


さて、ではプロフィール文書がすでに作成されているかどうかをLotusScriptで調べることは可能であるのか?
通常の文書であれば、NotesDocumentクラスのIsNewNoteプロパティであったり、NotesUIDocumentクラスのIsNewDocプロパティで調べることもできるし、
もしくはNoteIDが0になっている場合、ということでも判断できる(UNIDは、仮で割り当てられるので、判断できない)。

実は、プロフィール文書では、上記のいずれも利用できないのだ。
GetProfileDocumentメソッドはNotesDocumentクラスのものなので、NotesUIDocumentクラスのIsNewDocプロパティはそもそも利用できないし、NotesDocumentクラスのIsNewNotesプロパティもFalseを返すのだ。
さらには、NoteIDも0以外の値を返す始末。

うーん・・・プロフィール文書、恐るべし。

ここで諦めてはもったいない。なんとか判断する方法はないだろうか?


ということで、ちょっと強引だが、次の方法を考えてみた。
CreatedプロパティとLastModifiedプロパティ、LastAccessedプロパティ、この3つがいずれも同じ日付、時間を指していたら?
それは、作成されてから、一度も更新されておらず、なおかつ、誰も編集モードで開いていない。
ということは、新規作成の状態。つまりは今までは存在しなかったのではないか?
となる。

サンプルを書くと、こんな感じ?


(前略)
set prodoc = db.GetProfileDocument( "ProfileForm" )
if ( prodoc.Created = prodoc.LastModified ) and ( prodoc.LastModified = prodoc.LastAccessed ) then
 Msgbox "プロフィール文書を新規に作成します"
End If
(後略)

どうだろう?


他に、良い方法がある方は教えて欲しい。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年9月9日水曜日

3つの変数を比較する

当たり前と言えば当たり前なんだけど・・・
3つの変数を比較する方法です。

a、b、cという3つの変数があったとして、全部が同じかどうかを比較するには
どうすればよいか?

If a = b then
If a = c then
Msgbox "3つとも同じ値です", MB_OK, "3つの変数の比較"
End If
Else
Msgbox "どれかの値が違っています。", MB_OK, "3つの変数の比較"
End If

この場合、aとcが違う場合、なんのメッセージも表示されずに終わってしまいます。
つまり、不完全だということです。

If ( a = b ) and ( a = c ) then
Msgbox "3つとも同じ値です", MB_OK, "3つの変数の比較"
Else
Msgbox "どれかの値が違っています。", MB_OK, "3つの変数の比較"
End If

これなら、最初にa、b、cの値を比較するので、大丈夫ですね。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

Working Smarter Forum 2009に行ってきました。

昨日に開催されたWorking Smarter Forum 2009に行ってきました。

さて、基調講演でちらっとお話しがありましたが、参加申込者が約1,500名ということでした。
今年も盛況だったようですね。
出展会場には、おなじみの会社の他、今年初めて出展する会社も何社かあったようです。
セッションをずっと聴いていると、なかなか出展会場を回る時間が取れないのが残念です。

何社かは、興味深い所がありましたので、詳しい話を聞いてみたいですね。


今年もノベルティをゲットしました。
アンケートに答えるともらえるLotus特製ブックカバーと、スタンプラリー完成(5個押印)でもらえる、ドライバーキットですね。


こちらは、出展各社のノベルティです。
チームスタジオ、アイ・ティ・フロンティア、トレンドマイクロ、ネスコ(敬称略)からいただきました。



そういえば、すでにセッションの資料ダウンロードができるそうです。
セッションを聴けなかった方は、是非ダウンロードしてみてください(別にIBMの回し者ではありません)。
こちらから


筆者の会社も、来年辺りは、何かしら出展できるように頑張らないといけないですね。