一.概要
1.問題の説明
書込テンプレートを作成するときに、セルウィジェットで複数のインジケーターがチェックを付けられ、次の2つの場合が発生することはよくあります。
1.書込の際に主キーがある場合、つまり、変更操作が実行され、送信が成功した後は1つの値のみが保留されること。
例:
プルダウンチェックボックスウィジェットで東京コーヒーなどの4つの会社名を選び、保存しました。ページを更新したら、最後に選択されたインジケーター丸鈴マリンフーズのみが保留されていることがわかりました。
2.書き込みの際に主キーがない場合、つまり、追加操作が実行され、送信が成功した後は複数の値が保存されていること。
例:
Productsテーブルを使用して、テストデータを書込用として追加します。サプライヤには3つのインジケータを選択して保存すると、Productsテーブルに三つのデータが追加されたことがわかります。
本マニュアルでプルダウンチェックボックスウィジェットで複数の値を選択して保存した後、複数の値が同一データに正しく表示される方法を説明します。
2.考え方
プルダウンチェックボックスウィジェットの戻り値のタイプはデフォルトで配列と設定されます。上記の2つの場合には、戻り値のタイプは文字列でなければなりませんので、誤った書込結果が発生します。
解決方法:プルダウンチェックボックスウィジェットの戻り値のタイプで配列を文字列に変更することにより解決できます。
注:変更操作と追加操作の考え方は同じです。
二.例示
1.テンプレートデザイン
帳票を新規作成します。
2.プルダウンチェックボックスウィジェットを設定
セルD3のウィジェットをプルダウンチェックボックスウィジェットと、戻り値のタイプを文字列と変更します。その他の値はデフォルトとなります。手順は下図の通りです:
3.データ辞書を設定
セルD3にデータ辞書を設定し、タイプをデータベーステーブルに設定し、データベースにFRDemoJPを選択し、データベーステーブルにSuppliersを選択し、実際値をSupplierIDに、表示値をSupplierNameに設定します。手順は下図の通りです:
4.「式の形式」を設定
セルD3を選択し、セル属性-形式-数式形式を設定します。式の形式を以下のとおりに設定します。
sql("FRDemoJP", "select DISTINCT suppliername from suppliers where supplierid in (" + $$$ + ")", 1)
手順は下図の通りです:
注:数式 sql("FRDemo", "select DISTINCT フィールド名 from テーブル名 where 実際値のフィールド in (" + $$$ + ")", 1,null) により、カーソルをセルから離すと、実際値ではなく表示値を表示できます。
5.フィールドタイプを変更
デザイナーのビルトインデータベーステーブルProductsのSupplierIDフィールドのタイプをintegerからtextに変更する必要があります。そうすると、文字列タイプの値を格納できるようになります。そうしないと、保存するときにエラー:データ列タイプが一致しませんが表示されます。
6.プレビュー
帳票を保存し、書込プレビューをクリックすると、下図のようになります。