Lotus Scriptを用いた外部Notes DBからのデータの取得 その1

 いままでは@関数で他のビューから値を取得する機能を実現しておりました。@関数でも他のDBのビューを指定して値を取得することも可能ですが、取得できるのはあくまでビュー上に表示された値のみです。Notesでは、それ以上の操作がしたい場合にはLotusScriptを使って開発することが一般的です。これから3回にわけてLotusScriptを用いた開発を紹介いたします。

 今回は名前(NotesID)をもとに、他の(社員情報DBのような)DBから社員情報(部署名、電話番号等)の値を取得し、現在の文書にセットするという機能のの開発を行います。この場合、以下1〜3の流れで処理を行うことになります。
1. 現在の文書から名前フィールドの値を取得する
2. 名前フィールドの値をもとに他のDB上で検索を行い、社員情報を取得する
3. 取得した値を現在の文書にセットする

 今回は1の部分(現在の文書から値を取得する)を実装したいと思います。

1. LotusScriptは色々な場所で定義することが可能ですが、アクションでも使用することが可能です。ためしに質問表フォームの設計で「サンプル」という名前のアクションを作成してください。その後、「実行」欄で「LotusScript」を選択し、値欄で「Msgbox "こんにちは"」と入力します。(Msgboxはダイアログボックスを表示させる命令です)

2. フォームの設計を保存し、Notesクライアントから質問表を開きます。追加された「サンプル」アクションをクリックすると、「こんにちは」と記載されたダイアログボックスが表示されます。

3. 今はアクションをクリックした場合の処理としてLotusScriptによる処理を記載しましたが、他にも色々なタイミングで実行させることが可能です。例えば、フォームのオブジェクト欄でQueryOpenやQuerySave等のイベントが記載されているのが確認できます。QueryOpenであればフォームが開いたタイミングで処理を実行し、QuerySaveでは保存処理をするタイミングでそこに記載されたロジックを実行します。

4. いよいよ、ここからが本番です。先ほどはアクションで処理を実行しましたが、フォーム上にボタンを作成し、ボタンをクリックしたタイミングで処理を実行させるようにしたいと思います。メニューから[作成]->[ホットスポット]->[ボタン]を選択し、フォーム上にボタンを追加します。

5. ボタンのプロパティで、ラベルに「社員情報取得」と入力します。(するとボタン上に指定した文字列が表示されます)

6. 実行欄で「LotusScript」を選択し、値欄に以下のロジックを設定します。
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Messagebox( uidoc.FieldGetText( "Name" ) )

■■■  ロジックの説明  ■■■
VBをやられたことがある方はLotusScriptとVBが非常に似ているとがお分かりになるかと思います。
Dimでは変数定義を行い、「Dim xxx As yyy」でxxxという名前の変数をyyy型で定義するという命令になります。NotesUIWorkspaceは現在開いているウィンドウ、NotesUIDocumentは現在開いている文書を操作するためのclassです。
ちなみに、各行を詳細に説明すると以下のとおりです。

1行目 : workspaceという名前でNotesUIWorkspaceのオブジェクトを作成します
2行目 : uidocという名前でNotesUIDocumentの変数を定義します。
3行目 : workspaceから現在の文書を取得し、uidocに設定します。
4行目 : uidocからNameフィールドの値を取得し、ダイアログボックスに表示させます。

1〜3行目は現在の文書を取得するためのお約束だと思ってください。
「FieldGetText(フィールド名)」は指定したフィールドの値をテキストとして取得するメソッドです。4行目ではNameフィールドの値を取得し、その値をダイアログボックスに表示させるという処理をしています。

7. フォームの設計を保存し、Notesクライアントからフォームを開きます。社員情報取得ボタンが追加されているので、ボタンをクリックし、Nameフィールドの値を表示するダイアログが表示されることを確認します。

今回はここまでで、次回他のDBにアクセスするロジックを紹介いたします。

前へ | Topへ | 次へ

inserted by FC2 system