一.数式編集ウィンドウ
FRは数式を使う場合が非常に多く、セル(=で始まると数式に解析される)、条件表示、データ辞書、帳票書き込み属性値定義、グラフタイトル、軸定義、ヘッダーフッター、さらにはセルの他の属性のマウスオーバーした時のヒント内容は数式を書くことができます。
1. if文の構文はExcelと似ており、if(条件数式, 値1, 値2)の形です。ifはネストできます。例えば、if(条件数式1, 値1, if(条件数式2, 値2, 値3))のようです。
2. =と==は、いずれも等式の判断に使用できます。
3. 'と"は、いずれも文字列に使用できます。
(1)boolにはtrueかfalseしかありません。&& または ||が利用できます。
(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.数式でセルを取る場合はA1かb2を使ってください。多sheetから値を取る数式はsheet 1!A1です。
6.SQL関数でデータベースから読み込む
7.データセット数式
例えば、テンプレートデータセットds1があり、そのフィールドは地域、販売員、販売量で、ds1.group(地域)でds1の地域フィールドを取得することができます。groupはグループ別で、selectがリストであることがわかります。ds1.select(販売員)はリスト形式で販売員フィールドを取得します。制限条件を加えることも可能です。例えば、ds1.select(販売員, 販売量=111)は、販売量が111の販売員の集合を取得することです。データセットに関連する関数はcolcount、colname、row、rowcountなどです。
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のandとorは数式と区別しなければなりません。数式の中で&&を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本です。