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

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

2010年3月30日火曜日

カラーパレットの内容が変わった?

久々に晴れましたね。でも、その分、花粉が飛散しているようです。花粉症の方は注意しましょうね。

今日も、にほんブログ村 IT技術ブログへランキングアップのご協力をお願いします。



昨日、8.5.1にFP2をあてましたという記事を書きました。
今日はその8.5.1 FP2を使っての作業です。まぁ、不具合対応がほとんどでしょう。と思っていたら・・・

変わってる箇所がありました。
カラーパレット(正式名称は何かしら?)の内容が変わってました・・・

百聞は一見にしかず。ということで見ていただきましょう。
7.0.4と8.0.2でのカラーパレットを参考情報として添付しておきます。違いを比べていただければより、分かりやすいでしょう。

色を変更するとき、どの色があの辺にあったよなぁ。なんて感覚で使っていた方(筆者のことです)は、十分に注意しましょう。とんでもない色になってしまいます。


【7.0.4でのカラーパレット】



【8.0.2でのカラーパレット】
7.0.4と同じですね。


【8.5.1 FP2でのカラーパレット】
えー。変えちゃったのぉ。せめてメジャーリリースで変えましょうよ・・・
なんとなく、Webでの利用を意識したような配置ですね。


ちなみに、カラーパレットを使用するような箇所は、
・文字の色を変える
・表のセルの色を変える
・セクションのタイトルの色を変える
・水平線の色を変える
・境界線の色を変える
等々あります。

[2010/03/30 16:40追記]
コメントをいただいたとおり、「Webパレットを使用する」にすると、カラーパレットが変更されます。
このオプションですが、Lotus Notes Client 8.5.1を新規にインストールしてセットアップすると、チェックがついた状態が初期値となります。
今回、筆者は、8.5.1の新規インストールから開始していたため、「Webパレットを使用する」にチェックがついていたのでした。
過去のバージョンを利用している方で、PCの入れ替え等に伴い、8.5を新規にインストールする際は、この点に気をつけていただければ幸いです。
改めて、お詫びいたします。誤った情報を流して申し訳ありませんでした。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月29日月曜日

インストールの時間を計測してみました

さきほどアップした記事Lotus Notes/Domino 8.5.1のFP2関連の記事です。

DOMINOMARUさんとのつぶやきで、8.5.1のインストール、アンインストールについて時間を計測してみよう。ということになりましたので、その結果を発表します。
すでに、8.5.1のFP2をインストールしてしまったので、アンインストールするところからテストを始めて、再度FP2をインストールするまでのそれぞれの時間を計測してみました。


ただし、これはあくまでも筆者の環境での結果なので、参考程度にとどめてください。
【筆者の環境】
OS Windows XP Professional SP3
CPU Intel Core2 Quad (2.40GHz)
RAM 3.0GB

1.Lotus Notes 8.5.1 FP2アンインストール
開始時刻: 16:04
終了時刻: 17:06
経過時間: 61'25"29

2.Lotus Notes 8.5.1 インストール
(クライアント、デザイナ、アドミニストレータ、シンフォニー)
開始時刻: 17:26
終了時刻: 17:41
経過時間: 14'53"01

3.Lotus Notes 8.5.1 FP1インストール
開始時刻: 18:00
終了時刻: 18:04
経過時間: 04'14"68

4.Lotus Notes 8.5.1 FP2インストール
開始時刻: 18:06
終了時刻: 18:22
経過時間: 15'25"76


8.5.1のFP2は新規インストールと同じくらいの時間がかかっているのが気になります。
また、アンインストールに約1時間と、かなりの時間がかかっています。
一度インストールしたら、使うのを止めないでね。という事でしょうか?

Lotus Notes/Domino 8.5.1のFP2

今週で3月も終わりです。もう4分の1が終わってしまうんですね。早すぎます・・・

今日も、にほんブログ村 IT技術ブログへランキングアップのご協力をお願いします。



では、本題。

IBMの方がブログでも書かれていますが、Lotus Notes/Domino 8.5.1のFP2がリリースされています。
8.5.1 FP2 がリリースされています
Lotus Notes/Domino 8.5.1 Fix Pack 2
早速、筆者もダウンロードして適用してみました・・・
が、なぜかインストールに失敗してしまいまして。

今後のFPで、同じ失敗を繰り返さないように、自戒の意味を込めて注意事項として記事にしておきます。

主な注意点は、以下の3つです。
  1. インストーラは、日本語フォルダに置かないこと。
  2. インストーラ起動時は、ノーツクライアントを終了しておくこと。
  3. インストーラ起動時は、nsd.exeを終了しておくこと。


1.ですが、Dominoのアップデートを行おうとして、インストーラをデスクトップに置いて実行したところ、正しくアップデートが行えなかったと言うことがあります。今回はクライアントなので、当てはまらないかもしれませんが、無難に作業をこなすためにも、「c:\」や「c;\temp」などのフォルダに置くのがよいでしょう。

2.はインストーラを起動すれば、注意されることなので、まず問題ないでしょう。

3.ですが、普段はサービスとして動いている(下図参照)ため、なかなか気がつかないと思います。インストーラのエラーを見ても、そのようには表示してくれないのも気がつくに悔い原因の一つでしょう。



他にもあるかもしれませんが、筆者は上記の3つをクリアして、うまくFP2にアップデートすることができました。


もし、失敗してアップデートできない!という方がいたら、参考にしてみてください。



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月25日木曜日

Excelオブジェクトが動作するようになった!

にほんブログ村 IT技術ブログへクリックしてから読んでくださいネ。


以前、Excelオブジェクトが動作しない!?の記事にて、ノーツ8.5では、ExcelがOLEでは動作しない。ということを書いた。

今更になって、気になったので、再度確認してみると・・・動くじゃありませんか。
筆者の環境はノーツが8.5->8.5.1にバージョンアップしたので、それが原因か?それとも、まさか、Windows UpdateでOfficeの不具合が修正された!?のか。

何はともあれ、Louts Notes 8.5.1 + Office 2007のExcelでは、Excelオブジェクトは動作するようになっています。
良かった良かった。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

3年目突入!

おはようございます。今日も生憎の天気ですね。「恵みの雨」とは言いますが、筆者としては日中は降らないで欲しい・・・そんな気持ちです。

さて、なんとこのブログも昨日で丸二年を迎え(ついに一周年!)、今日から3年目という運びになりました。
パチパチパチ・・・
ということでお祝いに
にほんブログ村 IT技術ブログへをクリックしてやってください。


昨年は年末にかけて、記事数が少なくなってしまい、一時は存続危うし!?かとも思いましたが、なんとか続けていくことができました。
累計アクセスも85,000件を超えて、目標の10万件まで後もう一息というところです。


筆者の会社では、Lotus Notes/Domino+αということを常にやってきていますので、そういった事をネタにできればと考えています。
もちろん、Lotus Notes/Dominoだけでのお話しもお伺いできますので、そう言ったネタも書いていきます。


それでは、3年目もよろしくご愛顧のほど、お願いしますm(_ _)m



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月24日水曜日

ExcelのWorkday関数をLotusScriptで実現してみよう

暑さ寒さも彼岸まで・・・ということわざに反して、今日は寒いですね。
今週いっぱいはこの寒さが続くようですが、週末は晴れるとのことで、お花見ができそうです(筆者は、お酒よりも、純粋に花を愛でるのが好きです)。

そんな話は置いておいて・・・今日もボタンをクリックしてくださいね。
にほんブログ村 IT技術ブログへ
くれぐれも読み逃げはしないように。


さて・・・
昨日は、LotusScriptで@BusinessDaysを実現してみました。
今日は、その派生で、基準となる日付から指定した日数だけ進めた日付はいつなのか?というものを求める関数を実現してみましょう。
ただし、そのままでは@AdjustやNotesDateTimeクラスのAdjustDayメソッドと変わらないので、営業日数分だけ進めた日数を求めるものにします。

この機能、ExcelにはWorkday関数というもので実装されているんですね。
ノーツで実現するとなると、どうすれば良いか・・・
営業日の分だけ進ませればよいので、1日ずつ進めていき、その日が営業日であれば、+1するという簡単なロジックにしました。

独立した関数にしてあるので、うまく組み込んでください。
呼び出し例はこんな感じです。
returnDate = Workday( "2010/03/24", 15, "1,7", "2010/01/01,2010/01/11,2010/02/11,2010/03/23,2010/04/29,2010/05/03,2010/05/04,2010/05/05" )

これを実行すると、戻り値は、[2010/04/14]となります。
Function Workday( baseDate As String, skipDays As Integer, daysToExclude As String, datesToExclude As String ) As Variant
    ' 戻り値 baseDateからskipDays営業日数分、進めた日付を返す
    ' 引数 baseDate 基準日
    ' skipDays 進めたい営業日数
    ' daysToExclude 営業に数えない曜日(1:日曜日、7:土曜日)
    ' datesToExclude 営業日に数えない祝祭日
    ' 注意 skipDaysが0の場合、baseDateを返す
    
    Dim baseDT As NotesDateTime
    Dim cnt As Integer
    Dim wday As String
    
    '基準日と進めたい日数を取得する
    Set baseDT = New NotesDateTime( baseDate )
    
    '営業日だけカウントアップする
    cnt = 0
    Do While skipDays > cnt
        Call baseDT.AdjustDay(1)
        wday = CStr( Weekday( baseDT.DateOnly ) )
        If InStr( daysToExclude, wday ) = 0 Then
            If InStr( datesToExclude, baseDT.DateOnly ) = 0 Then
                cnt = cnt + 1
            End If
        End If
    Loop
    
    'ループを抜けた日付が求めたい日
    Workday = CDat( baseDT.DateOnly )
End Function



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月23日火曜日

LotusScriptで@BusinessDaysを実現してみる

皆さん、3連休はいかがお過ごしでしたか?
筆者は花粉症がひどく、辛い3日間でした。
でも、今日からはまた仕事ですので、そんな泣き言は言ってられません。

ということで、やる気を出すためのボタンクリックをお願いします!
にほんブログ村 IT技術ブログへ
ありがとうございます。


さて、今日は・・・
営業日数を算出するという事をLotusScriptで実現する必要があったので、やってみました。
@関数では、@BusinessDaysというのがあるので良いのですが、LotusScriptにはそれらしきものは見あたりません。

Evaluate( "@BusinessDays(~" )
でやっても良いのですが、それでは芸がないのでLotusScriptでやってみましょう。

単純に組んでみました。
開始日と終了日の間に、どれだけ日付があるかをカウントしているだけです。
その間に、定義した休日がくる場合は、カウントしないというようにしています。

@BusinessDaysに似せて作っているので、引数は以下の4つです。
  • startDate 開始日
日付型ではなく、テキストです。
  • endDate  終了日
日付型ではなく、テキストです。
  • daysToExclude 営業日としてカウントしない曜日(1が日曜日、2が月曜日・・・7が土曜日)
複数設定する場合は、","(コンマ)などで区切ってください。数値ではなく、テキストです。
  • datesToExclude 営業日としてカウントしない日付
複数設定する場合は、","(コンマ)などで区切ってください。テキストです。

戻り値は、営業日数です(Integerの数値型)。

試してみてください。
Function BusinessDays( startDate As String, endDate As String, daysToExclude As String, datesToExclude As String ) As Integer
    On Error GoTo ErrProc
    
    Dim startDT As NotesDateTime '基準日
    Dim endDT As NotesDateTime '終了日
    Dim wday As Integer '開始日の曜日
    Dim cnt As Integer '営業日数
    
    Set startDT = New NotesDateTime( startDate )
    Set endDT = New NotesDateTime( endDate )
    
    cnt = 0
    Do While startDT.DateOnly <= endDT.DateOnly wday = CStr( Weekday(startDT.DateOnly) )
        If InStr( daysToExclude, wday ) <> 0 Or InStr( datesToExclude, startDT.DateOnly ) <> 0 Then
        Else
            cnt = cnt + 1
        End If
        Call startDT.AdjustDay( 1 )
    Loop
    
    '戻り値を返す
    BusinessDays = cnt
    Exit Function
ErrProc:
    BusinessDays = -1
    Exit Function
End Function



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月19日金曜日

アクセス制御リストの変更履歴を取得する

今週最後のランキング協力お願いです
にほんブログ村 IT技術ブログへ


昨日に続き、アクセス制御リスト関連のネタです。
今日はアクセス制御リストの変更履歴を取得してみましょう。

まずは、下の画面を見てください。
とあるDBのアクセス制御リストのログ画面です。
ここには、ACLを変更した際の履歴が、過去20件に渡って記録されています(それを超えると、古いものから削除されていきます)。
この画面では、「日付時刻」と「アクション」の2つの列に分かれていることが分かります。


では、実際に取得してみましょう。
下のサンプルがそれです。

気になるのは、ログを取得するのがNotesACLクラスではなく、NotesDatabaseクラスのプロパティであること。
ACL情報だからNotesACLクラスだろう。というのは誤りだと言うことです。
また、ログは1件が1つの文字列として取得されると言うことです。
日付時刻やアクションという単位で分かれていないのです。
もし、日付時刻だけ取得したいと言う場合には注意が必要です。

ちなみに、下図が実行結果です。


Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim udoc As NotesDocument
    Dim curdb As NotesDatabase
    Dim cnt As Integer
    Dim acllog As String
    
    '自DBの取得
    Set uidoc = uiws.CurrentDocument
    Set udoc = uidoc.Document
    Set curdb = udoc.ParentDatabase
    
    '変数の初期化
    acllog = "【変更の履歴】"
    cnt = 1
    
    'アクセス制御リストのログの取得(文字列の配列で返すので、Forallで取得する)
    Forall x In curdb.ACLActivityLog
        acllog = acllog & Chr$(10) & Format(Cstr(cnt), "00") & ": " & x
        cnt = cnt + 1
    End Forall
    
    '結果の表示
    Msgbox acllog, 0, "アクセス制御リスト: " & curdb.Title
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2010年3月18日木曜日

現在のDBに対するアクセス権を求める

暖かくなったと思ったら寒くなったり、春先は天候が不安定なので、体調管理には気をつけましょうね。
筆者は寒暖の差に弱いので、普段よりも気をつけています。

では、今日の記事の前に・・・
にほんブログ村 IT技術ブログへ
押しましたね?押してない方は読んじゃ嫌です。


では、本題へ。
今日は@関数ネタです。8.5のネタか!?と思った人は残念でした、ごめんなさい。

さてさて・・・
@関数の一つに、ノーツDBに対して、現在のユーザのアクセス権を調べる@UserAccessというのがあります。
構文は
@UserAccess(サーバ名:DBファイルパス名;[調査したいアクセス権オプション])
です。

「調査したいアクセス権オプション」は、R6から追加されたもので、省略も可能です。
ここで、注意したいことが一つあります。
このオプションを省略した場合には、[REPLICATEORCOPYDOCUMENTS]の結果は返ってこないと言うことです。
このオプションは、「文書を複製またはコピー」にチェックがついているかどうかを返すものなのですが、なぜか返ってこないのです。
この事はヘルプにも出ていますので、良く確認してから使いましょう。


サンプルは、現在のDBに対するアクセス権を確認するという簡単なものです。
オプションを省略した場合と、[ReplicateOrCopyDocuments]オプションを付けた場合の2種類を実行しています。

工夫して使えば、データベースのアクセス権チェックといったアプリケーションを作成することも可能ですね。
tmp := @UserAccess(@DbName);
@Prompt([Ok];"@UserAccessの結果";"戻り値の個数: "+@Text(@Elements(tmp))+@NewLine+"戻り値: "+@Implode(tmp));

tmp2 := @UserAccess(@DbName;[ReplicateOrCopyDocuments]);
@Prompt([Ok];"文書を複製又はコピーの結果";@Text(tmp2))



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

2010年3月15日月曜日

文書の未読既読状態をチェックする

今日はLotus Domino Designer 8.5 開発者ガイド購入記念ということで、8.5のネタです。

皆様がクリックしてくれているおかげで、順調にランキングが上がっています。
さらに順位を上げて、Lotus Notes/Dominoユーザが増えることを期待しましょう。
ということで?、
にほんブログ村 IT技術ブログへ
さぁ、今日もクリックしましょう。




文書の未読/既読状態を確認できるというNotesDocumentクラスのGetReadメソッドの紹介です。
このメソッド、たしかに、Designerヘルプに8.5からの新機能として記載されています。

引数を省略すると、プログラムを実行したユーザが該当する文書を読んだのかそうでないのかを返してくれます。
ということで、サンプルを組んでみました。

サンプルは、ビューで選択した文書の既読未読チェックをして結果を表示するものです。

ここで、ちょっと驚いたことが起こりました。
通常、Lotus Scriptを組んでいると、そのクラスのメンバー(メソッド及びプロパティ)が候補として表示されますが、GetReadは表示されないのです。

【旧バージョンスタイルのLotus Script - Formなどで組む場合】


【EclipseスタイルのLotus Script - エージェントやスクリプトライブラリで組む場合】


完全に、隠しメソッド扱いです・・・
8.5.2では表示されることを祈っています。

ちなみに、引数にはString型でユーザ名をセットできます。
この場合、"Masahiko Miyo/EFMIYO"というように、ユーザ名と組織名がセットされていないといけません。"Masahiko Miyo"では反応しません。注意しましょう。
Sub Initialize()
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim docs As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim cnt As Integer
    Dim msg As String
    
    '選択した文書の取得(分かりやすくするために、10文書までは選択可能とする)
    Set db = session.Currentdatabase
    Set docs = db.Unprocesseddocuments
    If docs.Count > 10 Then
        MsgBox "選択する文書は10までとしてください。"
        Exit Sub
    End If
    
    'メッセージを順番に表示するために、降順で処理をする
    For cnt = docs.Count To 1 Step -1
        Set doc = docs.Getnthdocument( cnt )
        If doc.GetRead() = True Then
            msg = CStr(cnt) & "番目の文書" & Chr$(9) & "【既読】" & Chr$(10) & msg
        Else
            msg = CStr(cnt) & "番目の文書" & Chr$(9) & "[未読]" & Chr$(10) & msg
        End If
    Next
    
    '選択した文書は、作成日時順にソートされて表示される
    MsgBox msg, MB_OK + MB_ICONINFORMATION, "選択した文書の既読未読チェック"
End Sub



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

選択したDBのODSバージョンを調べる

本日、二つ目の記事です。しかし、3月も半ばだというのに冷えますね。
以前、Lotus Domino 8.5の新しいODSを利用するには・・・という記事で紹介した内容に近いものです。

興味のある方だけご覧ください。

では、記事に移る前に・・・
にほんブログ村 IT技術ブログへ
押してくださってありがとうございます。





ノーツDBのODSバージョンを調べる方法です。
普通だったら、ノーツDBのプロパティを見れば良いのですが(下図参照)、

これをプログラムで判断できないか?ということで、やってみました。

ノーツDBのODSはLotus Notes/Dominoのバージョンによって左右されると言うことで、
サンプルは「選択したノーツDBのODSバージョンを調べる」というものにしてあります。

方法は簡単で、NotesDatabaseクラスのFileFormatプロパティを使うだけです。
このプロパティはRelease 6で追加されましたが、もちろんR5以前のDBに対しても使えます。
(実際にxxxx.ns3というノーツDBを作成してみて、そのODSを調べてみたら、「17」と判断されました。)

Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    Dim ret As Variant 'Promptメソッドの戻り値
    Dim session As New NotesSession
    Dim db As NotesDatabase
    
    ret = uiws.Prompt( 13, "", "" )
    
    If Isempty( ret ) Then
        Msgbox _
        "キャンセルがクリックされました。処理を中断します。", _
        MB_OK + MB_ICONSTOP, _
        "選択したDBのODSバージョンを調べる"
        Exit Sub
    End If
    
    Set db = session.GetDatabase( ret(0), ret(1), False )
    If Not( db Is Nothing ) Then
        Msgbox "このNotes DBのODSは " & db.FileFormat & "です。", _
        MB_OK + MB_ICONINFORMATION, _
        "選択したDBのODSバージョンを調べる"
    End If
End Sub



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

Lotus Domino Designer 8.5 開発者ガイド

すでに、各Lotus関係者の方々?もブログの記事にしているとおり、
Lotus Domino Designer 8.5開発者ガイドが発売されました!!

ということで、筆者も購入してきました。
発売日の3/12に購入する予定でしたが、残念ながら行った書店にはまだ届いていなかったようで、仕方なく3/13に秋葉原のヨドバシカメラ店内の書籍コーナーにて購入してきました。
まだ、数冊在庫がありましたので、購入していない方は、書店へダッシュ!しましょう。



万が一、探せなかった!と言う方のために写真を貼り付けておきます(大丈夫だよね?)。


【表紙】



【背表紙】


そして、秀和システムさんのページはこちらから。
Lotus Domino Designer 8.5開発者ガイド


ちなみに、Amazonでは一時的に在庫がなくなっているようです(3/15 10:30現在)。

2010年3月12日金曜日

8.5.1で変わったところ その5

なんと3日連続です。びっくり。
しばらくお伝えしていなかった8.5.1関連の話です。

今週最後のボタンクリックです。
にほんブログ村 IT技術ブログへ
押しましたね?


では、記事に移りましょう。
今日はメールです。
8.5からメールを送信するときに、暗号化やデジタル署名をすると、そのメールを受け取ったときに画面でチェックができるようになりました(下図参照)。



これでも十分だと思っていましたが、さすが8.5.1。やることが違います。
宛先/件名の表示箇所付近に文字列を表示してくれています。
(詳細は下図を参照)







当然、受信側も分かるように表示されています。


まぁ、何のことはない。フォームに文字列が書かれていて、非表示式が設定してあるだけなんですけどね。
『画面の下なんか、見るか!』というクレームでもあったのでしょうか???


どうせなら、他のオプションにも対応して欲しかったですね。
惜っしいなぁ(笑)。




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

2010年3月11日木曜日

選択したDBのレプリカIDを求める

今日は、ドミノ懇談室にあった問題についてです。
「文書が保存されていません」が表示され、エージェントが実行できない
に出ていた選択したDBのレプリカIDを求める方法です。

@関数とLotus Script(エージェント)を組み合わせて使っていましたが、せっかくだからLotus Scriptだけで実現してみましょう。


ということで、記事に移る前に、今日もボタンを押してから読みましょう。
にほんブログ村 IT技術ブログへ
はい。ご協力ありがとうございました。





では、早速。
実は以前にヒントとなるサンプルを掲載しているんですね。
「データベースを開く」ダイアログを表示するです。

ここで紹介しているNotesUIWorkspaceクラスのPromptメソッドが@Prompt([ChooseDatabase];"";"")の代わりになるんですね。
このメソッドの戻り値の1番目と2番目を使えば、サーバ名とDBファイル名を取得できるので、後はNotesDatabaseを取得するだけです。
簡単にできましたね。

Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    Dim ret As Variant 'Promptメソッドの戻り値
    Dim session As New NotesSession
    Dim db As NotesDatabase
    
    ret = uiws.Prompt( 13, "", "" )
    
    If Isempty( ret ) Then
        Msgbox _
        "キャンセルがクリックされました。処理を中断します。", _
        MB_OK + MB_ICONSTOP, _
        "DBの選択"
        Exit Sub
    End If
    
    Set db = session.GetDatabase( ret(0), ret(1), False )
    If Not( db Is Nothing ) Then
        Msgbox "選択したDBのレプリカID: " & db.ReplicaID, MB_OK, "DBの選択"
    End If
End Sub



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

2010年3月10日水曜日

ビューの列にバイトを表示する

珍しく2日連続の投稿です。

今日もボタンを押してから読みましょう。
にほんブログ村 IT技術ブログへ
1人1回で十分ですよ。でも、1回は押してくださいね。

今日はノーツアプリケーション開発中にころっと忘れていたことを・・・
筆者はご存じの通り?、Lotus Domino Designer 8.5.1で開発をしています。
でも、下位バージョンでも使えるように開発しています(実際に、提供するときはそのバージョンで組み直していますけどね)。


さて、本題です。
Lotus Notes/Domino 8.0から追加された機能に、「ビューの列で数値を表現する際、バイトで表す」というのがあります(下図参照)。


この設定を行った列は、数値をバイトと解釈して、自動的にKBやMBへと変換してくれます。
ちなみに、TB(テラバイト=1,099,511,627,776バイト)の単位まで表示してくれました。

下図は、実際にこの設定を施したビューです(数値そのものは、@Random関数で適当に出してます)。



便利ですねぇ。
と思っていたのですが、冒頭に記載したように、これはLotus Notes/Domino 8.0からの機能なんですね。
現在、作業しているのはNotes Domino 7.0で動作するアプリケーションなんですね。
ということで、見事に動作しません。
やられました・・・

くれぐれも開発を行う際は、そのバージョンでできることを確認してからにしましょう!
という教訓でした。





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

2010年3月9日火曜日

フルアドミニストレータを設定していると・・・

久々の投稿です(最近は、こればっかりですね)。


今日は、いつもと違って管理系のお話しです。

でも、その前にランキング向上協力のお願いです。
にほんブログ村 IT技術ブログへ
ポチッとな。

Lotus Notes/Domino 6.5(6.0?)で追加された機能の一つに、「フルアドミニストレーター」なるものがありますね。
これは、ノーツDBのACLを無視してアクセスできるため、ACLの設定ミスの修正や、読者権限を誤って設定して見えなくなった文書の復旧用に使えます。
(その他の機能については、管理者ヘルプ(Administrator ヘルプ)をフルアドミニストレーターで検索してください)


と言いつつ、ヘルプに書いてないことが起きました。
筆者の設定ミスもしくは認識ミスかもしれないので、鵜呑みにはしないで欲しいのですが・・・
このフルアドミニストレーターを設定したユーザは、どんなエージェントでも実行出来るのではないか?と言うことです。
通常、エージェントの実行制御は、ドミノディレクトリのサーバ文書内の[セキュリティ]タブで設定します(下図参照)。


ここがすべて空欄の場合、
サーバ上で動作するエージェント(スケジュールエージェント等)は、実行権限が不足していると言うことでエラーになります。

が!
ここがすべて空欄でも、「管理者(フルアクセス)」(←フルアドミニストレーターのことね)欄に、ユーザー名/グループ名等が入っていると、そのユーザーで署名したサーバーエージェントは動作してしまうんですね。

エージェントが実行出来ないことを証明するテストを行っていたのですが、なぜか実行出来てしまっていて、「なんでだろう?」と思っていて、「ん?待てよ・・・」と思って、
「管理者(フルアクセス)」を空欄にして、Dominoを再起動。

なんと!エージェントが動作しなくなるではないですか。おぉ、良かったぁ。
ではなくて、そうなの?ホントに?どうなのよ???

と困惑する筆者ですが、その後、何度か設定を変更してテストをしてみましたが、やはり「フルアドミニストレーター」はサーバ文書の設定を無視して、エージェントを実行出来るようだ。
という結論に至りました。


便利だけど、怖い機能ですね。
普段から設定されている方は、一度見直した方が良いですよ。


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