2023/09/10

表形式のフォームとリスト値

ノーツでアプリケーションを作成していると、Excel シートのように複数の項目(列)を複数行入力するような画面が必要となることがあります。

例えば、交通費精算フォームです。行先、交通機関、金額を1セットとして、使用した経路数分入力するような画面です。

単純に作成すると、次のような感じになるかと思います。

ただ、このような構造だと、必要な行数分フィールドをあらかじめ作成する必要があります。多数の行を作成すると、フォームが間延びしますし、入力する行が少ないと美しくないですね。また、見やすく非表示にしようとすると、1行ごとに非表示式が微妙に変化し、設定が面倒です。

そもそも、入力できる行数に上限が発生するので、汎用性があまりないといえます。


このような場合に利用できるのがリスト値です。

リスト値とは1つのフィールド内に複数の値を持つ状態を言います。プログラミング的には配列と呼ばれるような形式です。ノーツでは、複数値と呼ぶことが多いです。

このブログではあえて”リスト値”と呼びます。プロパティ名が”複数値”となっていることもあり、”複数値”を連呼することになり、記事がこってり重く感じたためです...


リスト値を使用したフォームの例

先に例を示します。上記フォームをリスト値で表現すると次のようなイメージになります。

フィールドを表す『 』は各列で1つとなっていて、それぞれの値は改行で区切られています。フォームの設計は次のようなっています。

このような構造であれば、フィールドは1つで入力する件数(行数)に制限はありません。もちろん、文書やフィールドの制限があり無限ではありませんが、一般的には制限はないといってよいと思います。


フィールドの設定

リスト値のフィールドの設定ですは、プロパティで『複数値も可』にチェックを入れるだけです。これで、このフィールドは、リスト値を保持できるようになります。

続いて、リスト値の区切り文字を設定します。区切り文字の設定は、入力時(編集モード)に効果のある『値の分離記号』と表示(読み込みモード)で使用する分離記号が指定できます。

今回の事例では、疑似的に表のように見せるため、値の分離記号は”改行”を指定します。これにより、リスト値の要素ごとに改行されます。同じ設定を表内のすべてのフィールドに行うと、同じ要素の値が横に並んで表示されます。


利用時の注意

今回の事例に上げたリスト値を利用して表のように表示する方法は、ノーツアプリ開発においてよく使用されます。ただ、いくつか注意点があります。


◇ Null 値は詰まる

リスト値では、値がない場合要素が詰まってしまいます。例えば、次のように入力します。

F9 を押して画面を更新すると次のように要素が詰まってしまいます。文字列の場合は、空白(スペース)をセットするなど対策が必要です。


◇ 数値や日付の場合

数値フィールドや日付の場合、型が一致しないことから、値のない場合にスペースをセットできません。このような場合、数値や日付値をテキスト値として保持するなど対策が必要となります。


◇ 値が長い場合

今回の対応は、区切り文字の改行を利用して疑似的に表っぽく表示しています。フィールドの値が長い場合、折り返しが発生するのですが、この場合、行のずれが発生して各要素の関係がつかめなくなります。


コメントなど文字数が特定できない場合などは、表示する文字数を決定するなど折り返しが発生しないようにしましょう。

また、表の列幅を固定にして、折り返しに備えることも有効ですね。


まとめ

リスト値を使用すると設計がシンプルになり、画面構成をすっきりさせることができます。

ただ、上記の通り、一部制約やテクニックを要する点もあります。まずは、テキスト(文字列)だけで構成される場合や必須入力(値を必ず入力する)の場合から活用するとよいかと思います。

0 件のコメント:

コメントを投稿