データセット変数による動的列の実現

  • 作成者:ayuan0625
  • 編集回数:25次
  • 最終更新:ayuan0625 于 2025-11-07
  • 一.概要

    1.バージョン

    帳票サーババージョン

    機能変動

    11.0

    -

    2.期待される効果

    関数による動的列の実現」の帳票では、すべてのデータを取得する必要があり、その後動的列帳票を実現します。データ量が多く、選択された列があまり多くない場合、パフォーマンスが低下することがあります。

    本文では別の動的列の作成方法を紹介します。この方法は、データ量が多い場合に「階層帳票の改ページクエリ」を実現でき、それにより帳票のパフォーマンスを向上させることができます。次の図に示すように:

    [PC]データセット変数による動的列の実現.gif 

    3.実現の考え方

    データセット変数を定義することで、表示する列を直接選択し、データ列をセルにドロップするだけで完了します。

    二.例

    1.データの準備

    一般帳票を新規作成します。

    1)新しいデータベースクエリds1を作成し、SQL文は次の通りです:SELECT ${col} FROM 販売量。データセット変数「col」を設定し、既定値は文字列型の「*」とし、つまりすべてのデータをクエリすることができます。次の図に示すように:

    1739243938499203.png

    2)新しいデータベースクエリds2を作成し、SQL文は次の通りです:SELECT * FROM 販売量 limit 1。1件のデータをクエリすることで、テーブル内のすべてのフィールド名を取得します。次の図に示すように:

    图片2.png 

    2.帳票のデザイン

    2.1テーブルスタイルのデザイン

    ユーザが選択するフィールドの数が不確定なため、テンプレートを作成する際にはすべての5つのフィールドをドロップする必要があります。

    1)ヘッダ行

    セルA1からセルE1までに数式を挿入し、$col変数を配列に変換します。セルA1からセルE1まではそれぞれ配列内の1番目から5番目までの値を返します。

    数式の内容は以下の表の通りです:

    セル

    数式

    数式の説明

    A1

    INDEXOFARRAY(split($col,","),1)

    INDEXOFARRAY(array,index):配列arrayのindex番目の要素を返す。

    SPLIT(String1,String2):String2で String1を分割してできる文字列配列を返す。

    変数$colの既定値は文字列型であるため、正しい値を返すにはまず配列に変換する必要がある。

    B1

    INDEXOFARRAY(split($col,","),2)

    C1

    INDEXOFARRAY(split($col,","),3)

    D1

    INDEXOFARRAY(split($col,","),4)

    E1

    INDEXOFARRAY(split($col,","),5)

    操作手順は次の図に示すように:

    图片3.png

    2)テーブルの内容

    セルA2からセルE2までに[データ列]を挿入します。[データセット]としてds1を選択し、[データ列]にそれぞれ #1、#2、#3、#4、#5 を入力します。[データ設定]は[一覧]、[展開方向]は[縦方向]とします。次の図のようになります:

    注意:「#数字」はデータの対応する列番号を表し、#1は1列目のデータを表します。

    图片4.png 

    2.2帳票枠線の設定

    それぞれセルA2からセルE2までを選択し、右側の[条件属性]をクリックします。[条件の追加]をクリックし、「枠属性」を[外枠]に設定します。[数式条件]の[タイプ]を[数式]に選択し、数式内容は次の通りです:len($$$)!=0。つまり、セルにデータが存在する場合に枠線を表示するようになります。次の図に示すように:

    图片5.png 

    2.3ヘッダ行背景の設定

    セルA1からセルE1までに[条件属性]を追加します。「背景属性」を選択し、「青色」に設定します。また、「枠属性」を選択し、[外枠]に設定します。[数式条件]の[タイプ]を[数式]に選択し、数式内容は次の通りです:len($$$)!=0。つまり、セルにデータがある場合に背景と枠線を表示するようになります。操作手順は第2.2節と同じで、設定画面は次の図に示すように:

    1739244137344691.png 

    3.変数の設定

    [変数パネル]をクリックし、[すべて追加]をクリックします。[変数パネル]に選択可能なウィジェットが表示され、[プルダウンチェックボックスウィジェット]を選択します。 次の図に示すように:

    图片7.png 

    [プルダウンチェックボックスウィジェット]を選択します。[ウィジェット値]のタイプを[文字列]に設定し、既定値を空白に設定します。[データ辞書]のタイプを[数式]に設定し、[実際値]にTABLEDATAFIELDS(\"ds2\")という数式を入力します。次の図に示すように:

    图片8.png 

    注意:[変数パネル]内の[プルダウンチェックボックスウィジェット]の既定値は必ず空白にする必要があります。そうしないとすべての列を取得できません。

    4.クリックイベントの設定

    変数が空白の場合、[クエリ]ボタンをクリックすると、既定で全ての列がクエリされます。

    [変数パネル]の[クエリ]ボタンをクリックし、[クリックイベント]を新規追加します。変数aを設定し、その値には数式 TABLEDATAFIELDS("ds2") を指定し、全てのフィールド名を取得します。そして JavaScript コードを追加します。次の図に示すように:

    图片9.png 

    JavaScriptコード次の通りです:

    var Widget = this.options.form.getWidgetByName("col");
    var value =  Widget.getValue(); //ウィジェットの[実際値]を取得する 
    if(value==''||value==null){
    /*[変数パネル]内の[テキスト]ウィジェットを取得し、判断後に値を代入する*/
    Widget.setValue(a);
    _g().parameterCommit();
    }

    5.効果プレビュー

    1)PC端末

    [改ページプレビュー]をクリックします。一部の対応するデータ列を選択し、[クエリ]をクリックすると、選択した列のデータが表示されます。効果は次の図の通りです:

    [PC]データセット変数による動的列の実現.gif 

    2)モバイル端末

    APP端末とHTML5端末の両方はサポートされています。効果は次の図に示すように:

    1739244328322382.gif 

    三.テンプレートのダウンロード

    テンプレートをダウンロードするにはこちらをクリックしてください:

    データセット変数による動的列の実現.cpt

     


    Attachment List


    Theme: FineReport パラメータ応用
    • いいね
    • 良くない
    • 閲覧しただけ