ノーツアプリケーション開発Hints & Tips 101 連発
株式会社ソルクシーズ
吉田武司
IBM Lotus/Domino Application Development Hints and Tips
Version 1.0.0
特記事項
• 本資料の掲載内容は、できる限り正確を期するように努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。
• 本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。
• 掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する事はご遠慮下さい。
• 当資料をコピー等で複製することは、執筆者の承諾なしではできません。
• IBM®、Lotus®、WebSphere® は、International Business Machines Corporation の米国およびその他の国における商標です。
• Google および Google ロゴ、Android および Android ロゴ、Gmail、YouTube および YouTube ロゴ、Picasa、Google Play とそのロゴ、Chrome、Chrome OS、Chromebook、Chromebooks for Work、Chromebox for meetings、Chrome Management Consoleは、Google Inc の商標または登録商標です。
• Microsoft, Encarta, MSN, およびWindows は、米国Microsoft Corporation の、米国およびその他の国における登録商標または商標です。
• Salesforce、Chatter、Sales Cloud、Service Cloud、Marketing Cloud、Salesforce Work.com、AppExchange、Salesforce Platform、および関連する全てのロゴは、salesforce.com,inc. の商標です。
• OracleとJavaはOracle Corporationおよびその関連企業の登録商標です。
• Twilio は Twilio, Inc. の登録商標あるいは商標です。
• Cloud Shared Office、CSO は株式会社ソルクシーズの登録商標です。
• 当資料に掲載された製品名または会社名はそれぞれの各社の商標または登録商標です。
• 一部イラストは、「ピクト缶」様を利用させて頂きました。感謝しております。(http://www.pictcan.com/)
2
はじめに
•ノーツアプリケーションで「よく利用する機能」かつ「比較的実装が簡単」なものをまとめました。
(例えば、LotusScript を使った高機能な処理は対象外です)
•機能によっては違う実装方法がある場合があります。また、本番で運用するにはエラー処理など追加のカスタマイズが必要な場合があります。
•資料作成に用いた環境は以下になります。• Domino サーバー 9.0.1 FP5
• Notes スタンダードクライアント 9.0.1 FP5
3
アジェンダ
フィールド編
フォーム編
ページ編
ビュー編
カレンダービュー編
フレームセット編
デザイン編
共有可能な設計要素編
その他機能編
データベース編
エージェント編
4
フィールド編
デフォルト値(初期値)を設定する
• フィールド• デフォルト値
補足@Today 今日の日付のみ
@Now 現在の日時
@Now([ServerTime]) 現在のサーバーの日時
※クライアント PC 毎の日時のズレの影響が無くなる
@UserName 現在のユーザー名
123 or “XXX” 固定の数字や文字列
6
必須入力にする(入力の確認)
• フィールド• 入力の確認
補足
@ThisValue 現在のフィールドの値
@ThisName 現在のフィールドの名前
@Failure 「入力の確認」の結果として、エラーメッセージを表示する場合
@Success 「入力の確認」の結果として、OK とする場合
7
条件付き必須入力にする
• フィールド• 入力の確認
補足フィールド [category01] または [action01] が入力ありで現在のフィールド [time01] が未入力の時、エラーとする例
@ThisName、@ThisValue を使用することで同じ条件のフィールドで再利用できるプログラムとなる
8
編集可能/不可を変更する(入力が有効)
• フィールド• 入力が有効
結果
True 編集可能
False 編集不可
※切り替えるためには、フォームの再計算を実行する必要がある
9
入力値を変換する(入力の変換)
• フィールド• 入力の変換
補足
@Wide 半角アルファベットや半角カタカナを全角に変換する
@Narrow 全角アルファベットや全角カタカナを半角に変換する
10
• フィールドの中にヘルプを表示する• ユーザーがフィールドにカーソルを移動すると消える
• プロパティ:フィールド• タブ:詳細
• フィールドヘルプ:[任意の文字列]
フィールドのヘルプを表示する(1) 11
• フォームの下部にヘルプを表示する
• プロパティ:フィールド• タブ:詳細
• ヘルプの内容:[任意の文字列]
補足
フィールドヘルプは、メニュー<表示-表示-フィールドヘルプ>で表示/非表示が設定できるため、ユーザーが非表示にしている可能性があることに注意
フィールドのヘルプを表示する(2) 12
複数の値を入力可能にする
• ダイアログリストやチェックボックスなどで複数の値を入力可能にする
• プロパティ:フィールド• タブ:フィールド情報
• 種類
• 複数値も可:有効
• タブ:詳細• 複数値オプション
• 値の分離記号
• 分離値の表示
13
例:値の分離記号:カンマ「移動,商談」と入力した場合、「移動」と「商談」の複数の値として認識
例:分離値の表示:セミコロン値が「移動」と「商談」の複数値の場合、「移動;商談」と表示
幅、高さを固定する
• プロパティ:フィールド• タブ:フィールド情報
• スタイル:ネイティブ OS スタイル
• サイズ
• 幅
• 高さ
14
読み込み/編集モード時に表示を切り替える
• 読み込み用と編集用のフィールドをそれぞれ用意し、モードにより表示/非表示を切り替える
• 読み込みモード用のフィールド• フィールドのプロパティ
• フィールド情報タブ
• 種類:表示用の計算結果
• 値:[フィールド名]
15
それぞれの行の段落非表示の設定を行う
段落非表示タブ
• 段落単位に指定が可能
• プロパティ:文字• タブ:段落非表示
• 式により段落を非表示:[条件の式を記述]
補足
式の結果が True の時、その段落を非表示
False の時、表示となるので注意
例
ロール [admin] を持たないユーザーの場合、非表示
条件によって段落(文字, フィールド)の表示/非表示を切り替える 16
ダイアログリスト(キーワード)を表示する
• プロパティ:フィールド• タブ:フィールド情報
• 種類:ダイアログリスト
編集可能
• タブ:制御• 選択:[選択肢を設定]
• 選択肢を入力 :固定の文字列を設定
• 式で選択肢を設定 :式を使って選択肢を生成
• アドレス帳から選択 :ディレクトリ(サーバーまたはローカル)のユーザー/グループ一覧を表示
• ACL から選択 :ACL に登録されているユーザー/グループ/ロールを表示
• [ビュー] ダイアログから選択:ビューを表示。設定した列の値を取得
17
ダイアログリストにない値も入力可能とする
• プロパティ:フィールド• タブ:制御
• オプション
• リストにない値も可:有効
18
日付ピッカーから日付を入力する
• フィールドのプロパティ• フィールド情報タブ
• 種類:日付/時刻、編集可能
• スタイル:日付/時刻制御
• 制御タブ• 日付の表示:有効
• 時刻の表示:無効
19
タイムピッカーから時間を入力する
• プロパティ:フィールド• タブ:フィールド情報
• 種類:日付/時刻、編集可能
• スタイル:日付/時刻制御
• タブ:制御• 日付の表示:無効
• 時刻の表示:有効
20
「複数値も可」の場合2つの時刻間の入力となる
日付/時刻の表示形式を変更する
• プロパティ:フィールド• タブ:制御
21
フィールドの境界(「」かぎかっこ)を非表示にする
• プロパティ:フィールド• タブ:制御
• 表示:フィールドの境界を表示
22
補足日付/時刻の場合「境界線」で「なし」を設定
文書を新規作成したユーザーに文書の作成者権限を与える
• プロパティ:フィールド• タブ:フィールド情報
• 種類:作成者、作成時の計算結果
(非表示ならば、編集可能でもよい)
• フィールド• 値/デフォルト値:@UserName
23
特定のロール所有者に文書の作成者権限を与える
• フィールドのプロパティ• フィールド情報タブ
• 種類:作成者、作成時の計算結果
(非表示ならば、編集可能でもよい)
• フィールド• 値/デフォルト値: (例)”[owner]”
※ロール [owner] を持つユーザーに権限を与える場合
24
複数のユーザーに文書の作成者権限を与える(1)
• 2つ以上のフィールドを作成する• 複数の作成者フィールドがある場合、すべてのフィールドが有効になる。
例:文書の作成者とロール [boss] を持つユーザーに権限を与える場合
25
複数のユーザーに文書の作成者権限を与える(2)
• プロパティ:フィールド• タブ:フィールド情報
• 種類:作成者、作成時の計算結果
(非表示ならば、編集可能でもよい)
• 複数値も可:有効
• フィールド• 値/デフォルト値: (例)”[owner]”:”[admin]”
※ロール [owner] と [admin] を持つユーザーに権限を与える場合
※値をリスト(「:」コロンでつなぐ)で設定
26
ユーザーの別名を取得
• 別名が使用可能な場合、@UserName のパラメータに「1」を指定することで別名を取得できる
例:@UserName(1)
CN=Taro Yamada/O=dev → CN=山田太郎/O=開発環境
27
フォーム編
メニューから新規文書を作成できるようにする
• プロパティ:フォーム• タブ:フォーム情報
• 表示
• メニューに含む:有効
※ [無効]の場合、非表示となる
29
検索ビルダーに表示する
• プロパティ:フォーム• タブ:フォーム情報
• 表示
• 検索ビルダーに含む:有効
30
新規文書を作成する時に選択している文書の値を引き継ぐ
• 文書を作成する時に選択文書のフィールド値を引き継いで作成することができる• 例:親文書の件名を引き継いで返答文書を作成する
• プロパティ:フォーム• タブ:デフォルト
• 作成するとき
• 式で選択文書からの値を引き継ぐ:有効
• フィールドの式で引き継ぎたいフィールド名を使用する
31
例:親文書のフィールド [report_docunid] の値を返答文書のフィールド [report_docunid] のデフォルト値として設定する
新規文書を作成する時に選択している文書全体を引き継ぐ
• 文書を作成する時に選択文書全体をリッチテキストに引き継いで作成することができる• 例:メールの履歴付き返信と同種の機能
• プロパティ:フォーム• タブ:デフォルト
• 作成するとき
• 選択文書全体をリッチテキストフィールドに引き継ぐ:有効
• [引き継ぐ先のフィールド名]
• 形式:[文書リンク], [セクション (省略可能)], [リッチテキスト]
32
引き継ぐ元の文書
引き継ぐ先の文書リッチテキスト
フォームの背景を変更する
• プロパティ:フォーム• タブ:フォームの背景
• 色:[任意]
• 図形またはリソース:[画像を指定」
33
例:社外秘の画像を表示
文書の印刷/転送/クリップボードへのコピーを禁止する
• プロパティ:フォーム• タブ:セキュリティ
• 印刷/転送/クリップボードへのコピーを不可:有効
• 補足• 印刷
• 文書を開いている場合、メニューから印刷が非表示となる
• ビューから印刷を実行した場合、警告が表示される
• 転送• 警告が表示される
• クリップボードへのコピー• コピーできない
※画面キャプチャーは可能なため、あくまでも補助的な機能である
34
印刷時の警告 転送時の警告
保存処理を制御する
• 予約フィールド [SaveOptions] に “0” を設定しておくと文書を保存ができないようにすることができる
※文章を閉じる操作を実行しても保存確認のダイアログが表示されずに閉じる
※本来は、メール用のオプション機能
• プロパティ:フィールド• タブ:フィールド情報
• 種類:テキスト
• フィールド• 値:”0”
※ ”1” を指定すると保存可能となる
• 参考文献• ヘルプ「メールオプションを制御する予約フィールド」
• SaveOptions の動作について(IBM)• http://www-01.ibm.com/support/docview.wss?uid=swg21465737
35
デフォルトのフォームを設定する
• プロパティ:フォーム• タブ:フォーム情報
• オプション
• デフォルトのデータベースフォーム:有効
36
文書のフィールド [Form ] に保存されているフォーム名と一致するフォームがデータベースにない場合、警告が表示される
その後、• デフォルトフォームが設定されている場合デフォルトフォームで文書が開く(一致するフィールド名があれば、値も表示される)
• デフォルトフォームが設定されていない場合警告が表示されて文書が開かない
編集できるフィールドをユーザーによって制限する(1)
• セクション(制限つきアクセス)を使用する• 設定されたユーザーのみ、セクション内の編集が可能になる
補足文書に対する権限までを制限するものではない
そのため、設定されていないユーザーでも文書に対する編集権限を持つ場合、フォームを使わない方法(エージェントなど)でフィールドを変更することは可能
• メニュー<作成-セクション-制限つきアクセス>
• プロパティ:フォームのセクション• タブ:式
• アクセス式
セクション内のフィールドの編集を許可するユーザー、ロール、グループ、またはそれらの値が設定されているフィールド名を設定
37
編集できるフィールドをユーザーによって制限する(2)
• フィールド編「読み込み/編集モード時にフィールドの表示を切り替える」を応用して、ユーザーによってフィールドを表示/非表示を切り替える
• 例• ユーザー A の場合、編集可能フィールドを表示、表示用の計算結果フィールドを非表示
• ユーザー B の場合、表示用の計算結果フィールドを表示、編集可能フィールドを非表示
補足文書に対する権限までを制限するものではない
そのため、ユーザーでも文書に対する編集権限を持つ場合、フォームを使わない方法(エージェントなど)でフィールドを変更することは可能
38
ページ
計算結果の値を表示する
• メニュー<作成-計算結果テキスト>を挿入
• 計算結果• 値:「式を記述」
40
例:データベースのタイトルを表示する
例:フレームセットと組み合わせて使用する
メニューを作成する
• アウトラインで作成したメニューをページに貼り付けて使用する
• アウトライン• 共有要素-アウトラインから作成
※ 「デフォルトアウトラインの作成」ボタンを使用した場合、現在のビュー/フォルダを元にメニューが自動生成される
• ページ• メニュー<作成-埋め込み設計要素-アウトライン>から作成したアウトラインを貼り付ける
41
デザイン編
水平線を表示する
• フォームやページで使用可能
• メニュー<作成-水平線>から貼り付ける
43
セクションを作成する
• フォームやページで使用可能
• メニュー<作成-セクション-標準/制限つきアクセス>から貼り付ける
44
タブを作成する
• メニュー<作成-表>• 表の種類:タブ
または、表を作成後に
• プロパティ:表• タブ:表の行
• 行の特殊表示:1行のみ表示
• 行の表示方法:タブボタンで行を選択
45
タブのラベルの設定:選択した行(タブラベルと表題)
フレームのデザインをフラットにする
• プロパティ:フレーム• タブ:フレームの境界線
• 境界線のスタイル
• 3-D 境界線:無効(「すべてのフレームに適用」をクリック)
• 境界線のスタイル:(色、幅を設定)
46
フレームセットに外枠を表示する
• 外枠を直接指定することができないため、以下の間接的な方法で表示する• 空のフレームを上下左右に作成する
• 上下のフレームに高さ 0 ピクセルを設定
• 左右のフレームに幅 0 ピクセルを設定
• 結果として上下左右のフレームが非表示になるが、フレーム間の幅・色を設定する機能は使用できるため、疑似的に外枠が表示される
47
高さ、幅を 0ピクセルに設定する前の状態
ビューのデザインをフラットにする
• プロパティ:ビュー• タブ:スタイル
• ヘッダー
• スタイル: 「シンプル」または「フラット」
48
ビューの行間、デザインを変更する
• プロパティ:ビュー• タブ:スタイル
• 主部
• 列
• 交互の列
• グリッド
• スタイル
• 色
• 行
• 間隔
49
アクションバーのスタイルを変更する
• プロパティ:アクションバー• アクションバーサイズ
• アクションバー背景
• アクションバー境界
• ボタンのプロパティ
• ボタンのフォント
50
ビュー編
アイコンを表示する
• プロパティ:列• タブ:列情報
• 値をアイコン表示:有効
• 列• 列の値:@If( @Attachments > 0 ; 5 ; "" )
(例)添付ファイル数が 0 より大きい場合
5 番のクリップのアイコンを表示
52
指定可能なアイコンの一覧
※列と行の合計が番号
カテゴリ別に表示する
• プロパティ:列• タブ:ソート
• ソート:「昇順」または「降順」
• 種類:カテゴリ別
53
1つの列で複数階層(カテゴリ別)を表示する
• カテゴリ別の列の値に “¥¥”(円マーク続けて2個)がある場合、階層表示になる
54
例年、月、日で階層表示文字列でのソートになるため、月と日を2桁表示で処理している(2桁で処理しないと1~12月、1~31日の順番にならないので注意)
左図の「日付」列は、以下の値となっている“2016年¥¥08月¥¥06日”“2016年¥¥08月¥¥12日”
ビューの名前を階層表示する
• ビューの名前に “¥”(円マーク1個)がある場合、フレームセットやナビゲータ未使用時のビュー名表示が階層表示になる
55
例“日付別¥Type2” の場合
列の値の合計を表示する
• プロパティ:列• タブ:ソート
• 合計:合計
56
補足文書数を集計したい場合、列の値を「1」とし、「詳細を非表示にする」を有効にする
列のヘッダーをクリックしてソート
• 列のヘッダーをクリックすることでソートが可能になる
• プロパティ:列• タブ:ソート
• 列のヘッダーをクリック時にソート:「昇順」「降順」「両方」
57
未読文書マークを表示する
• プロパティ:ビュー• タブ:詳細
• 未読マーク:「未読文書のみ」または「標準(階層処理)」
• タブ:スタイル• 行
• 未読:「色」「太文字」「透明」
58
システムアクションを追加する
• メニュー<作成-アクション-システムアクションの挿入>
または、
• 右クリックから「システムアクションの挿入」
59
ビューのカスタマイズを許可する
• プロパティ:ビュー• タブ:オプション
• カスタマイズを許可:有効
60
各ユーザーが列の入れ替えを自由にできる
選択用の余白を表示する
• プロパティ:ビュー• タブ:スタイル
• その他
• 選択用の余白を表示:有効
61
無効 有効
最後の列をウィンドウ幅の最後まで広げる
• 利用環境にあわせて、最後の列の幅を広げることが可能
• プロパティ:ビュー• スタイルタブ
• その他
• 最後の列をウィンドウ幅の最後まで広げる:有効
62
無効
有効
行の高さを変更する
• プロパティ:ビュー• タブ:スタイル
• 行:
• 高さ
• 行の高さを内容に合わせる
補足
「行の高さを内容に合わせる」を有効にすると
データの行数が設定値より小さい場合、
自動的にデータの行数に合わせて表示する
63
例:設定値は「6行」、データが「3行」、よって3行で表示
列の値を複数行で表示する
• 列の値が複数値の場合、分離記号を「改行」に指定すると複数行で表示される
• 行の高さを2以上に設定する(「行の高さを変更する」参照)
• プロパティ:列• 複数値の分離記号:改行
64
返答文書を表示する
• プロパティ:ビュー• タブ:オプション
• 返答文書を階層表示する:有効
• プロパティ:列(返答文書用)• タブ:列情報
• 返答文書のみ表示:有効
• 展開てきる行に三角アイコンを表示する:有効
• プロパティ:列(返答文書用の右列)• タブ:列情報
• 展開できる行に三角アイコンを表示する:有効
65
行の色を動的に変更する
• 列の計算結果に応じて動的に行と文字の色(RGB)を指定する
• 色を指定するための列を先頭に作成する
• 列は非表示に設定する
66
例:日付が土日でフォーム [fmReport] の場合、背景色 224:241:255 、文字色 0:0:0 で表示する
リッチテキストの値を表示する
• リッチテキストの値を直接ビューに表示することはできない
• 表示したい場合、リッチテキストとは別にビュー表示用のテキストを用意しておく必要がある
• ビューでは、テキストに変換しておいた方のフィールドを指定する
67
例文書を保存する時にリッチテキストの値をテキストに変換また、改行を半角空白に変換
文書の貼り付けを禁止する
• ビュー• イベント:Querypaste(LotusScript)
• 変数「Continue」に「False」を設定
68
例
未読文書のみ表示する
• 未読文書のみを表示する場合、@ViewShowThisUnread(“1”) を使用する
• 解除する場合、@ViewShowThisUnread(“0”) を使用する
69
通常 未読文書のみ
補足カテゴリ別表示ではなくなる点に注意
カレンダービュー編
カレンダー形式で表示する
• プロパティ:ビュー• タブ:ビュー情報
• スタイル:カレンダー
• プロパティ:列(1番目)• タブ:ソート
• ソート:昇順
※データは、日付/時刻型であること
71
カレンダー形式のヘッダーのカスタマイズ
• プロパティ:ビュー• タブ:スタイル
• ヘッダー
• 背景
• スタイル
• 表示
• タブ:日付と時刻の形式• 利用できるカレンダー形式
72
カレンダー形式の切り替える@コマンド
• @コマンド• CalendarFormat
• パラメータ:
• “1”:1 日間表示
• “2”:2 日間表示
• “5”:1 作業週間表示(月曜日から金曜日)
• “7”:1 週間表示
• “10”:2 作業週間表示(月曜日から金曜日) Release 8 以降
• “14”:2 週間表示
• “20”:1 作業月間表示(月曜日から金曜日) Release 8 以降
• “30”:1 ヵ月間表示
補足• パラメータは、数字ではなく、文字列を設定
• プロパティ:ビュー
• 日付と時刻の形式タブ
• 「利用できるカレンダー形式」で有効になっている形式であること
• @コマンド以外に、カレンダーのヘッダーのタブで切り替えることも可能
73
日付ピッカーからカレンダービューを操作する
• ページ• メニュー<作成-埋め込み設計要素-日付ピッカー>から日付ピッカーを配置する
• フレームセット• 日付ピッカーを配置したページをフレームセットに設定する
• 日付ピッカーのフレームの「フレーム内のリンクのデフォルト対象」とカレンダービューを表示するフレームの「名前」を一致させる
※一致させなくても動作はするが、念のため一致させておいた方がよいと思われる
74
共有可能な設計要素編
サブフォーム
• 共有要素-サブフォームより作成
• メニュー<作成-リソース-サブフォームの挿入>からフォームに挿入• ヘッダーやフッター、複数のフォームで利用可能な共通部品としてまとめられる
• 特定のサブフォームを挿入する以外に、式の計算結果によって挿入するサブフォームを切り替えることも可能
76
共有フィールド
• 共有要素-フィールドより作成
• メニュー<作成-リソース-共有フィールドの挿入>からフォームに挿入• 部署や氏名フィールドを複数のフォームで利用可能な共通部品として作成できる
77
列
• 共有要素-列より作成
• メニュー<作成-共有列の挿入(追加)>からビューに挿入• ビューの列を複数のビューで利用可能な共通部品として作成できる
78
共有アクション
• コード-共有アクションより作成
• メニュー<作成-共有アクションの挿入>からビューに挿入
• メニュー<作成-アクション-共有アクションの挿入>からフォームに挿入• アクションを複数のフォームやビューで利用可能な共通部品として作成できる
79
スクリプトライブラリ
• コード-スクリプトライブラリより作成
• アクションやエージェントの LotusScript で使用する共通のライブラリを作成できる
• (Options) に使用するスクリプトライブラリを指定しておく必要がある
80
例)渡した値の足し算の結果を返すスクリプトライブラリ 例)呼び出し側
その他の機能編
作成日/作成者/更新日/更新者を作成する(簡易)
項目 種類(左) 種類(右) 計算式(例)
作成日 日付/時刻 作成時の計算結果 @Now または@Now([ServerTime]) ※サーバーの時刻を取得
作成者(例1) テキスト 作成時の計算結果 @DbLookup( "Notes":"NoCache" ; "names.nsf" ; "($Users)" ; @UserName ; “comment" )※ ドミノディレクトリのユーザー文書のコメントフィールドに漢字氏名が設定済みの想定
作成者(例2) 名前 作成時の計算結果 @UserName または@UserName(1) ※別名が使用できる場合
更新日 日付/時刻 計算結果 v := @Now([ServerTime]);@If( @IsDocBeingSaved ; v ; @ThisValue );
更新者(例1) テキスト 計算結果 v := @DbLookup( "Notes":"NoCache" ; "names.nsf" ; "($Users)" ; @UserName ; “comment" )
@If( @IsDocBeingSaved ; v ; @ThisValue );
更新者(例2) 名前 計算結果 V := @UserName(1);@If( @IsDocBeingSaved ; v ; @ThisValue );
82
補足
• サブフォームで作成しておくと複数のフォームで共用できるため便利である
• 上記方法は簡易な方法である。
• 作成日は、最初の保存日時ではなく、新規フォームを開いた日時である
• 更新日/更新者は、保存時の再計算時にフィールドの「入力の確認」や「型チェック」でエラーが発生しても表示が更新される(保存はされていないので問題なしとする考えもあるが、厳密に処理したい場合、LotusScirptを使って Querysaveイベントでエラーチェックおよび更新の必要がある)
• 更新日、更新者を作成日と作成者の式と同じにする方法もある。但し、保存なしの再計算時にも表示が更新される
フォームにビューを埋め込む
• メニュー<作成-埋め込み設計要素-ビュー>からフォームにビューを埋め込むことが可能
83
• 埋め込みビューで表示する文書を特定のカテゴリのみに指定することが可能
例
フィールド [report_docunid] の値と一致するカテゴリの文書のみを表示する
補足
Domino Designer の画面ではすべての文書が表示される
確認は Notes クライアントで行う必要がある
フォームにビューを埋め込む(表示するカテゴリを指定する) 84
ビューを表示して値を取得する
1. フォームにボタン(またはアクションボタン)を配置する
2. @PickList を使用してビューを表示する
3. 選択された行の指定した列(左から何番目)の値が返される
4. [オプション] 返された値を使って別途@DbLookup を使用して検索/値を取得する
※複数の値を取得したい、目的の値がビューに表示されていない等々
85
例)
ダイアログボックスを表示する(@Prompt)確認系
• ユーザーに確認を表示するスタイルのダイアログボックス• YesNo
• YesNoCancel
• Ok
86
ダイアログボックスを表示する(@Prompt)選択系
• ユーザーに選択肢を表示するスタイルのダイアログボックス• OkCancelCombo
• OkCancelList
• OkCancelListMult
• 複数選択可
87
ダイアログボックスを表示する(@Prompt)入力系
• ユーザーに入力を求めるスタイルのダイアログボックス• OkCancelEdit
• OkCancelEditCombo
• 選択肢から選択することも可能
88
ダイアログボックスを表示する(@Prompt)特殊系
• 特殊なスタイルのダイアログボックス• Password
• 入力文字が「*」で表示
• LocalBrowse
• クライアント PC 内のファイル選択ダイアログが表示
• ChooseDatabse
• アプリケーション(データベース)の選択ダイアログが表示
89
ダイアログボックスの文字列を改行する(@Prompt)
• @Char(13) を使用する
90
ダイアログボックスを表示する(@DialogBox)
• @DialogBox を使用すると、フォームをダイアログボックスとして利用可能になる
91
例レイアウト領域を使ったダイアログボックス用フォーム
ボタンのプログラム
メールを送信する
• @MailSend を使用する構文:@MailSend( sendTo ; copyTo ; blindCopyTo ; subject ; remark ; bodyFields ; [ flags ] )
92
例:@MailSend( boss_username ; "" ; "" ; "日報の確認をお願いします" ; remark ; "" ; [IncludeDoclink] );
以下の条件• 宛先:フィールド「boss_username」のユーザー• 件名:"日報の確認をお願いします“• 本文:変数「remark」の内容• 文書リンク付き
ローカル PC の notes.ini へデータを設定/取得する
• @Environment、@SetEnvironment を使用すると Notes クライアントを実行しているローカル PC のファイル(notes.ini)へデータを設定/取得することが可能• 式内で設定したい場合、@Environment を使用する
• @If や@Do など他の@関数内にネストする中で設定したい場合、@SetEnvironment を使用する
• 取得したい場合、@Environment を使用する
例:上司の漢字氏名を設定する
次回、文書を作成する時は前回の値がデフォルトで表示される• 設定方法:ボタンから式を実行
@Environment( "reportdb_boss_usernamejp" ; usernameJP );
• 取得方法:フィールドのデフォルト値に式を記述
@Environment("reportdb_boss_usernamejp")
補足
便利な機能ではあるが、ローカル PC に保存されるため保守性を考えて使う必要がある
スケジュールエージェント内で実行する場合、サーバーの notes.ini が対象になる
93
ローカル PC の notes.ini の変数を削除する
• @Environment、@SetEnvironment を使用して Notes クライアントを実行しているローカルPC のファイル(notes.ini)へ設定した変数を削除するには、「""」空の文字列を設定する
例:
@Environment( "reportdb_boss_usernamejp" ; "" );
または、
@SetEnvironment( "reportdb_boss_usernamejp" ; "" );
94
• 標準機能で作成する• アプリケーションについて
• リソース-ポリシー文書で作成
• @Command([HelpAboutDatabase]) で開く
• アプリケーションの使い方• リソース-使用法文書で作成
• @Command([HelpUsingDatabase])で開く
• フォームやページを使用して作成する
ヘルプを作成する 95
環境設定機能を作成する
• 「選択肢」や「参照先データベースのパス&ファイル名」をプログラムの中で直接設定するのではなく、環境設定機能を設けて後から変更/設定できるようにしたい場合がある
• 主に2つの方法がある• 環境設定用フォームを用意し、文書を作成する(@コマンド [Compose])
その文書をビューからプログラムで取得する(例:@DbLookup)
• 環境設定用フォームを用意し、プロフィール文書として作成する(例:@コマンド [EditProfileDocument])
そのプロフィール文書をプログラムで取得する(例:@GetProfileField)
※プロフィール文書については別ページ参照
96
プロフィール文書を作成/編集する(@コマンド)
• プロフィール文書を作成するには、以下の@コマンドを使用する• 構文:@Command( [EditProfileDocument] ; formname ; uniqueKey )
• Formname:フォームの名前
• uniqueKey:プロフィール文書を識別する一意のキー(例:ユーザー名)
補足• フォームとキーの組み合わせ1つにつき、1文書だけ作成が可能(複数は作成不可)
• 作成・編集するには、@コマンド [EditProfileDocument] から開く
主な特徴長所:比較的プログラムが短くて済む(@関数だと1行のコードで情報を取得できる)
非表示の文書のためビューは不要
短所:キャッシュされるため、頻繁に変更される情報の参照/保存には利用できない
(例:文書の通し番号)詳細は、ヘルプ参照:@GetProfileField (式言語)
97
プロフィール文書のフィールド値を取得/設定する
• フィールド値を取得• @GetProfileField( profilename ; fieldname ; uniqueKey )
• フィールド値を設定• @SetProfileField( profilename ; fieldname ; value ; uniqueKey )
98
プロフィール文書で使用しているフォーム
例
フィールド値を取得して、他アプリケーション(DB)から値を取得
フォームを変更する
• 作成した時のフォームと違うフォームに変更したい場合
• プロパティ:フィールド• タブ:フィールド情報
• 名前:Form
• 種類:テキスト
• フィールド• 値/デフォルト値: (例)”fmNotice”
※変更先のフォーム名を設定
99
一時的に違うフォームで開く
• 作成した時のフォームと違うフォームで一時的に開きたい場合
• ビュー• フォームの式:[開きたいフォーム名]
補足
設定したビューから開く場合のみ、指定したフォームで開く
100
アクションメニューにセパレーターを表示する 101
• プロパティ:アクション• タブ:アクション情報
• 種類:メニューセパレータ
アクションボタンからリンクメッセージを作成する
• メニュー<作成-メール-特殊-リンクメッセージ>と同じ働きをするアクションボタンを作成する場合、以下の式を使用する
@Command( [Compose] ; @MailDbName ; "Bookmark" )
• 現在開いている文書へのリンクが付いたメールが簡単に作成できる
102
応用:「伝言メモ」を作成する場合、以下の式を使用する@Command( [Compose] ; @MailDbName ; "Phone Message" )
データベース編
DB のアイコンを設定する
• リソース-アイコンから設定する
104
起動時に開く設計要素を設定する
• プロパティ:データベース• タブ:起動
105
フレームセット以外も設定可能
テンプレートとして作成する
• ファイルの拡張子を「.ntf」とする
• プロパティ:データベース• タブ:設計
• 継承
• マスターテンプレートのデータベース:有効
• テンプレート名:[任意の名前]
106
テンプレートから設計を引き継ぐように設定する
• プロパティ:データベース• タブ:設計
• 継承
• テンプレートから設計を引き継ぐ:有効
• テンプレート名:[テンプレートの名前]
• design タスクや再設計の実行時にテンプレートの設計に置き換わる
107
例)テンプレート側の設定
文書のロックを許可する
• 文書を編集モードで開いている時、他のユーザーが同じ文書を編集モードにすることを抑止する機能(競合の低減)。但し、癖が強い機能なので使用には注意が必要
• プロパティ:データベース• タブ:データベースの基本
• 文書のロックを許可:有効
• 参考文献• Lotus Notes/Domino 文書ロックの仕組みFAQ
• http://www.ibm.com/developerworks/jp/lotus/ldd_tech/20030328.html
• 文書ロックとソフトロックの違いについて• https://www-01.ibm.com/support/docview.wss?uid=swg21464483
108
ロック時のメッセージ
未読マークを使用しないようにする
• 未読マークを使用しないデータベースでは、オフにすることが可能• 例:マスターなど
• プロパティ:データベース• タブ:詳細
• 未読マークオプション
• 未読マークを使用しない:有効
109
ビューの書き出しを非表示にする
• プロパティ:データベース• タブ:詳細
• 詳細オプション
• ビューのデータの書き出しを無効にする:有効
110
ビューのコンテキストメニュー(右クリック)
メニューバー
ビューのデータの書き出しを無効にする
有効 無効
特定条件での削除を禁止する
• コード-データベースクリプト• Querydocumentdelete
• 変数「Continue」に「False」を設定して処理を終了すると削除がキャンセルとなる
• 補足
• ACLで削除権限があっても「手動」での削除ができない
• 但し、エージェントなどプログラムからの削除は、権限があれば可能なので注意が必要である
111
例:上司が確認済みの日報を削除禁止とする
エージェント編
処理対象文書の検索条件(シンプルアクション、式)
• 以下の2つの条件を満たす文書が処理対象となる
• プロパティ:エージェント• タブ:基本
• 実行
• 対象:「作成または変更されたすべての文書」※1
または「データベースのすべての文書」
※1:前回のエージェント実行時から作成または変更された文書が対象
(エージェントがまだ処理を実行していない文書が対象)
但し、エージェントの初回実行時と更新(保存)時は、すべての文書が対象となるので注意
• エージェント• Document Selection:「検索条件の追加…」から設定
113
処理を記述する(シンプルアクション、式)
• エージェント:シンプルアクションの場合• アクション:「アクションの追加…」から設定
• エージェント:シンプルアクションの場合• アクション:(式を記述)
114
スケジュールを設定する
• プロパティ:エージェント• タブ:基本
• 実行
• トリガー:スケジュール
• 「一日一回以上」「毎日」「毎週」「毎月」「なし」から選択
• 「スケジュール…」ボタンから詳細な設定を行う
115
最後までご覧頂き、ありがとうございました。
Top Related