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

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

2016年2月11日木曜日

XPagesで数値フィールドを表現する場合の注意点

皆さん、こんにちは。

XPagesアプリケーションの開発は順調ですか?
私も頑張ってますよ。

ということで今日はXPagesの話題です。

Notes/Dominoで扱えるデータ型は多数ありますが、大きく分けると
  • 文字列
  • 数値
  • 日付/時刻
  • リッチテキスト
になります。

クラシックなNotesアプリケーション(フォーム/ビューを中心としたNotesクライアントで利用するアプリケーション)の場合は、あまり深く考えずに利用できると思いますが、
XPagesアプリケーション(Webブラウザでの利用) となると、そうはいきません。
JavaScriptやHTMLの制限事項に引っかかってしまうことがしばしばあります。

そういった注意事項について、当ブログでは、日付/時刻については何度か紹介していますね。
今回は、その「日付/時刻」ではなく、「数値」について注意点を紹介します。



まず、「数値」についておさらいしましょう。
ここで言う「数値」とは、「0」~「9」の文字で表される、演算できる数のことを指します。
テキストとしての数は含みません。
また、「数値」は、整数と小数に分類することができます。


次に、Notesクライアントで数値を表示する方法を考えてみましょう。
まず、Notes DBのフォームに「数値」という種類のフィールドを作成します。
数値フィールドの定義

小数点以下を有効にするかどうかも決めることができます。
数値フィールドの定義2(小数点の定義)


このフォームで、いくつか文書を作成して、ビューで結果を確認してみました。
数値フィールドをビューで確認


これらの文書をフォームで表示したらどうなるかも確認してみました。
数値フィールドをフォームで確認

ちょっと雑ですが、入力した通りに表示されていますね。

では、このNotes DBをこのままWebブラウザで表示してみましょう。
幸い、Notes/Dominoは標準でHTTPサーバの機能を持っていますので、何もしなくてもそのままWebで表示することができます(考えたらすごいことですよね)。

Webブラウザでビューを表示

ほぼそのままNotesクライアントで見た形になっていますね。

念のため、文書を開いた状態でも確認してみましょう。
面倒くさいので(笑)、一文書だけ。
Webブラウザで文書を表示

はい。確かに入力した結果がそのまま表示されています。

うん、Notes/Dominoは素敵ですね。



では今度は、 XPagesで表現してみましょう。
ビューコントロールを配置して、先ほど作成したビューをデータソースにします。
XPagesでビューを表示

うん。できてますね。・・・って、あれ?なんか変だぞ?
あ!整数のみのはずなのに、「123.0」とか「-456.0」と小数点が表示されているじゃないか!

ビューコントロールのプロパティを確認したところ、「数値フィールド」の列の表示タイプが"文字列"になっていたことが原因のようです。
ここは、表示タイプを"数値"に変更して、再表示させてみましょう。きっとうまくいくはず!
列の表示タイプを数値に変更

表示タイプを数値に変更したビュー


うん。整数は「123」「-456」と正しく表示されるようになったぞ。よしよし・・・
ん?あれ???ちょっと待てよ?
!!なんで、小数点が3桁しか表示されてないんだ!?

はい。小数点第9位までにゅうりょくしておいた「123.456789012」という数値がXPagesのビューでは、なぜか「123.457」という中途半端な数値に置き換わっているのです。

文書として開いたらどうなるのでしょうか?
ここは急いで確認しないといけません!
フォームをデータソースにして、XPageを作成して、ビューから表示できるようにしました。
文書をXPagesで表示

はい。画面を見ればすぐにわかりますね。
やはり小数点第3位までしか表示されていません。


ここで、ちょっと調べてみました。
すると、Webブラウザで数値を表示しようとすると、小数点第4位で四捨五入されて、小数点第3位までしか表示されないようであることがわかりました。

そう言われると、その通りの動きなので納得です。
では、どうすればよいのでしょうか?



編集ボックスや計算結果コントロールの場合、「データ」プロパティに「表示タイプ」という項目があります。その中の「表示形式」を"カスタム"にして、「パターン」を以下のようにします。
"0.#########"
※"#"の数は表示させたい小数点の桁数分入力します。
数値フィールの表示タイプを変更

ここで、なぜ、"0.#########"なのでしょうか?
"#"というのは、一番上位もしくは下位の値が"0"の時はその位を表示しないよ。という意味があります。
ここを"0.000000000"としてしまうと、整数の「123」も「123.000000000」というように表示されてしまい、ちょっと格好が悪いんですね。

さぁ、それではビューとフォームの2つのXPageを修正したので、結果を見てみましょう。
まずはビューから。
列の数値タイプをカスタムにしてみた結果

はい。正しく表示されましたね。
次はフォーム。
数値フィールドの表示タイプをカスタムに変更

いかがでしょうか?
整数は整数のみ、小数点付きは小数第9位までしっかりと表示されています。


※この処理を行わないまま、文書の編集・保存を行ってしまうと、桁数が切られてしまうので注意が必要です。


今日は、この不思議な現象の検証に丸々一日費やしてしまいました。
原因が分かったからいいようなものの、ちょっと無駄にしてしまいましたね。



こういう時は、一人で悩まずに、QAサイトで質問するのが 良いでしょう。
幸い、Notes/DominoにはqA for ICS Developersというサイトがあります。

こちらのサイトは、Notes/Dominoに関するQAをみんなの力で解決しようというものです。
是非、活用してくださいね。
あ、質問するだけでなく、自分が知っていることがあれば、回答もしてあげてくださいね。

そうすれば、次回に分からないことがあった時に、助けてもらいやすくなりますよ。



では今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: