FineReport 関数構文一覧

  • 作成者:ayuan0625
  • 編集回数:13次
  • 最終更新:FRInternational 于 2021-11-30
  • 一.数式編集ウィンドウ

    FRは数式を使う場合が非常に多く、セル(=で始まると数式に解析される)、条件表示、データ辞書、帳票書き込み属性値定義、グラフタイトル、軸定義、ヘッダーフッター、さらにはセルの他の属性のマウスオーバーした時のヒント内容は数式を書くことができます。

    1. if文の構文はExcelと似ており、if(条件数式, 値1, 値2)の形です。ifはネストできます。例えば、if(条件数式1, 値1, if(条件数式2, 値2, 値3))のようです。

    2. ===は、いずれも等式の判断に使用できます。

    3. '"は、いずれも文字列に使用できます。

    (1)boolにはtruefalseしかありません。&& または ||が利用できます。

    (2)空と判断するとisnull()またはlen($$$)=0を使います。

    (3)format数式。format式は比較的フレキシブルです。format($$$,"0.00")は、現在のセルの数字を2桁の小数に変換することができます。format(12,"予算値: 0.00万元")で12を予算値: 12.00万元に変換することができます。注意すべき点は、満桁年月日のスタイルは「yyyy-mm-dd」ではなく「yyyy-MM-dd」で、小文字のmmは分(minute)の意味です。

    5.数式でセルを取る場合はA1b2を使ってください。多sheetから値を取る数式はsheet 1!A1です。

    6.SQL関数でデータベースから読み込む

    7.データセット数式

    例えば、テンプレートデータセットds1があり、そのフィールドは地域、販売員、販売量で、ds1.group(地域)ds1の地域フィールドを取得することができます。groupはグループ別で、selectがリストであることがわかります。ds1.select(販売員)はリスト形式で販売員フィールドを取得します。制限条件を加えることも可能です。例えば、ds1.select(販売員, 販売量=111)は、販売量が111の販売員の集合を取得することです。データセットに関連する関数はcolcountcolnamerowrowcountなどです。

    8.階層座標。詳しいことは階層座標関数をご参照ください。

    階層座標関数は、比較的複雑で難しい関数です。階層座標関数を覚えておけば、様々な複雑な機能を実現できます。よく使われるのはランキング数式です=count(B3[!0]{B3 > $B3})+1

    9.フィルタ数式。

    フィルタリングには2つの条件タイプがあり、その1つは数式条件です。この数式は、現在のセルのフィールドのデータセットであればどのフィールドに直接書くこともできるので、通常の数式よりも柔軟です。販売量を例にして、地域フィールドのセルをフィルタして、公式条件には販売量==111と書きます。

    10.条件属性。詳細は条件属性をご参照ください。

    簡単に言えば、条件属性パネルは、上が属性で、下が条件です。下の条件が満たされている場合、つまり戻り値がtrueの場合、上記の属性設定を実行します。

    二.SQL編集ウィンドウ

    データセット定義のパネルは、帳票で最もよく使用されるモジュールの1つです。

    1.実行プロセス

    ここでは、文字列を生成し、FRが設定されたデータ接続を介してその文字列を帳票に渡します。この過程で帳票は、まず帳票ルールのもの(例えば、現在のルールは${}にパラメータを入れることです)を、みんなが知っている文字列に置き換えた後、対応するデータベースが実行されます。そして、値がフィードバックされ、エラー情報が返される可能性があり、データセットが返される可能性もあります。このエラー情報は対応するデータベースから与えられるもののはずです。そのため、同じSQL文では、異なるデータベースが異なるSQL構文で実行されると、異なる結果になる可能性があります。例えば、select 'sdf' はAccessとSQLServerで正常に表示され、Oracleではエラーになります。select version()またはshowstatusまたはshowtablesは、MySQLのデータセット定義で正常に実行できますが、他は機能しません。SQLのandorは数式と区別しなければなりません。数式の中で&&andに使い間違う可能性があります。数式の中のまたは||はOracleの中で文字列のコネクタもあります。

    2.SQLで数式を呼び出す

    帳票は、数式とパラメーターを通じてSQL文との相互作用を実現します。

    数式はフレーム${}に配置されます。したがって、${"select*from t 1"}は、実際にはselect*from t1と等価です。

    データ集中用数式の難点は、つなぎ合わせが面倒であることです。

    最初の例は、ヘルプドキュメントのパラメーターが空である場合に、すべてのsql文を返すことです

    SELECT * FROM ORDERS where 1=1 ${if(len(area) == 0,"","and shipper area ='" + area + "'")} ${if(len(province) == 0, "","and shipper province ='" + province + "'")}

    FRのformatを呼び出す例を挙げます

    select ${"'"+format(p1,"yyyy-MM-dd")+"'"} from aa

    format関数の前後の単引用符を見逃すと、間違った結果が得られます。実際、いくつかの方法で処理を簡素化することができます。例えば、もう一つの変数p2を宣言して、この変数を引用する定義はformat(p1,"yyyy-MM-dd")で、このとき、上のSQLはselect '$ {p2}' from aaになります

    3.SQLでSQL関数を呼び出す

    前に述べたように、SQL文は実際には文字列です。それで、データベースから文字列を呼び出してsql文として操作することができます。この場合はSQL関数を使用します。例えば、

    =sql("FRDemo",sql("FRDemo","select testtext from test where id=2",1,1),1,1)

    test この表の2番目のデータのtesttextフィールドは文字列 select top 1 地域 from 販売量

    この文字列は、SQL数式でSQLステートメントとして実行されることができます。

    データセット定義の向こうに以下のように書くことは可能です。${sql("FRDemo","select testtext from test where id = 2",1,1)}

    三.JS編集ウィンドウ

    1.FineReportとJavaScript

    B/S製品としては、browser端末のJava Scriptが不可欠です。FRのjsは既にfinereport.jsを呼び出しています。

    帳票をプレビューするとき、帳票ServletはcptテンプレートをHTMLに変換し、このHTMLのheadヘッダにFRのJSがインポートされます。このfinereport.jsには、多くの内蔵functionといくつかの公開属性が含まれています。テンプレートでも他のwebページでも、finereport.jsが導入されていれば、FR.xxxの形で共通の属性と方法を呼び出すことができます。

    2.区別

    JSには主に2種類あり、ページ関連状態のイベントとボタン関連のイベントがあります。ボタンには3種類あり、1つはツールバーのボタン、1つはパラメータパネルまたはダッシュボードモードのボタン、もう1つは書き込みページのボタンです。ボタンによって文が少し違います。

    ダッシュボードはformで、書き込みはwriteです。ウィジェットを取得し、それに値を割り当てることを例に

    this.options.write.getWidgetByName("p1").setValue("aaa");
    this.options.form.getWidgetByName("p1").setValue("aaa");
    contentPane.getWidgetByName("p1").setValue("aaa");

    3.JS編集ウィンドウ呼び出し数式

    数式はフレーム"${}"に置かれています。

    例えば、var v1="${len('sdf')}"; この場合、v1は3です。

    データセットの定義と数式の相互作用との違いは以下のようです。JSの""の下にあるのは文字列です。SQLは実際文字列で、SQLが定義したところは${}の中にあるのは数式で、JS編集ボックスの中の"${}"は数式です。

    4.URL

    まずopパラメータです。詳細はopパラメータ概要をご参照ください。

    帳票はデフォルトのプレビューが改ページプレビューで、opパラメータがwriteの場合は書き込みプレビューで、op=viewデータ分析で、op=formダッシュボードモードです

    他のopパラメータのタイプ

    op=fs、ポータル

    op=excel_submit、バックグラウンドでExcelをインポートして書き込み

    op=auth_loginログインの中間ページfine_usernameとfine_passwordパラメータが必要です

    その他のパラメータ

    __bypagesize__:改ページの有無をコントロールします

    __pi__:パラメータインタフェースを表示するか

    __filename__:ファイル名をエクスポートし、ない場合はデフォルトでテンプレート名を使用します

    注:下線は横線2本です。

    Attachment List


    Theme: FineReport 帳票実例
    既に最初
    既に最後
    • Helpful
    • Not helpful
    • Only read