FC2ブログ

接続文書を作るボタンスクリプト

2008年11月26日 22:42

今日はこの記事から接続文書の話をしようと思います。

LotusScript で接続文書を作成・更新する方法 (#732059)

あまり使われないサーバーのリンクを送ったら「そのリンクが開けない」と返されてしまった、と言う経験がある方は多いのではないでしょうか。 サーバーが移転していたり、自分と微妙にネットワーク環境が違うために名前解決できなかったり、サーバーのIPが変わっていたり原因は様々ですが、接続文書を作ってもらえば解決する事は多いのではないかと思います。
 しかし、リンクが開けない理由も分からないユーザーに、接続文書をメールで手順を示して作ってもらうのはちょっと大変ですよね。

そんなときに一番簡単な方法は、Ctrl+0や[ファイル]-[サーバー]-[開く]で出てくるダイアログのサーバー名にIPアドレスやFQDN形式のネットワークアドレスを入力する事です。サーバーのIPが変わっていたら接続文書や接続キャッシュを更新してくれるので多くの場合接続の問題を回避することが出来ます。接続情報が無い場合には接続文書がそのIPアドレスで作られた事がステータスバーのメッセージなどで確認出来ると思います。

 この方法の問題点は、このときローカルのNames.nsf に作られる接続文書は[詳細]タブにある「使用優先度」フィールドを見ると、優先度が「低」で設定されてしまっているために次回接続時はまた間違った情報でつないでしまったり、その接続文書を参照するまで無駄なネットワーク参照を行ったりして接続に時間がかかってしまうこともあるので、次回以降の接続時に意外とうまくいかないことがあります。


そういうときは、この記事にあるような接続文書作成ホットスポットボタンを作成してリンクと一緒に付けておくと便利です。
 これは既存の接続文書があれば更新してアドレスをIPにしたり、使用優先度を「普通」に変えたりしますし、存在しなければ新規に作成します。
TCPIPポートにしか対応していないですが、特に開けない人が多いと予想されるサーバーなどにつなぐときにはこのボタンも付けておくと便利なのではないかと思います。

自分の場合新規にセットアップした環境などにまとめて接続文書を作っておきたいのでまとめて接続文書を作っておくホットスポットボタンを持っておいてセットアップと同時に接続文書を一気に作ってしまいます。


 このくらいのスクリプトは、必要になったら自分で作ってしまってもそれほどの負担ではないと思うのですが、サーバーのIPが変わったときなどの通知に付けるなど、色々な場面で使ってもらえるとうれしいです。

スマートアイコン: 現在のフィールド値を使って別フォームに文書を作る

2008年11月26日 01:50

 今日もまたスマートアイコンの紹介をしてみます。

 あるノーツデータベースの情報を使って別ノーツデータベースに新規文書を作らないといけないようなデータベースがありました。
 元DBの情報を引き継ぐために手作業ででデータを引用していかないといけないので、単純で煩雑な作業が多い、と言う声が結構あったのですが、自分は設計者権限も無い事もあって、フォームレベルで連携して操作を簡易化することは出来なさそうでした。

 そこで考えたのが、こんな感じのスマートアイコンです。元文書をビューレベルで選択するか、フォームで開いた状態でスマートアイコンを押すと、新規文書が作成されます。ここで書かれている処理はそんなに奇抜でもなければ、難しい処理はしていないのですが、ノーツアプリケーションの機能がちょっと足りていないときなどにスマートアイコンで拡張していくと道が開ける事が多いのではないかと思います。実用的であればプロトタイプとして設計者に渡せば実現も早いのではないでしょうか。

出来るだけ汎用的に書き直してみたのですが、始めに青字のコピー先のデータベースやフォーム情報を入力して tmp_xxxのところにコピーしたいフィールド名をリストして、EditGotoField の行にコピー先のフォームでのフィールド名を指定していけばコピーするフィールドはいくつでも増やす事が出来ます。ただし、EditGoToFieldのようなUIの操作を前提にしているので隠しフィールドなどに入力する事は想定していないのと、文書リンクを貼る場合、操作以前にクリップボードに入っていた値は消えてしまうのであらかじめご注意下さい。

サンプル
Dest_Server := "ServerName/Org";
Dest_DBPath := "apps\\test.nsf";
Dest_Form := "MainTopic";


@Command([OpenDocument]);

REM{コピー先で文書リンクが必要な場合(クリップボードの値が失われるので注意!)};
@Command( [EditMakeDocLink] );

REM {右辺にコピーしたいフィールド名を指定して下さい};
tmp_idnumber := IDNumber;
tmp_subject := Subject;
REM {日付だけをコピーしたい場合の加工例};
tmp_date := @Text(Date_Created; "D0S0") ;

@Command([Compose];Dest_Server:Dest_DBPath;Dest_Form);

REM {フィールド値のセット};
REM {EditGotoField の行にコピー先のフォームでのフィールド名を指定して下さい};


@Command([EditGotoField];"Subject");
@Command([EditInsertText]; tmp_subject);

@Command([EditGotoField];"HNumber");
@Command([EditInsertText]; tmp_idnumber);

@Command([EditGotoField];"DateOpened");
@Command([EditInsertText];tmp_date);

REM {文書リンクを貼る場合には、EditPasteを使用します};
@Command([EditGotoField];"TelHistoryDocLink");
@Command([EditPaste]);


最新記事