国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java報表工具FineReport的SQL編輯框的語法簡介

2019-11-14 23:49:56
字體:
來源:轉載
供稿:網友
java報表工具FineReport的SQL編輯框的語法簡介感謝大家捧場,這里繼續分享關于SQL編輯框的一些語法心得總結,因為數據集定義的面板,也是FineReport報表中最常用的模塊之一。

1.我理解的執行過程。

這里其實是生成一個字符串,FineReport將這個字符串通過設置的數據連接傳遞到報表中執行。在這個過程中報表應該是先把報表規則的東西,替換成大家都認得的字符串后,對應的數據庫執行完,會反饋值,有可能返回報錯信息,也有可能返回數據集。這個報錯信息應該是對應的數據庫給的。所以說同樣的sql語句,不同的數據庫用不同的sql語法來執行有可能是不同的結果。比如select 'sdf'在access和sqlserver正常顯示,在Oracle就拋錯。用select version()或者show status或者show tables能在MySQL的數據集定義里正常執行,其他則不行。

sql中的and和or要和公式區別開,有人可能在公式里面把&&用成and。還有公式里面的或||在oracle中是字符串的連接符。

2.sql中調用公式

報表通過公式和參數實現與sql語句的交互。

公式放在框架${}中。于是${"select* from t1"}其實就等價于select *from t1。

數據集中用公式的難點在于拼接起來比較繁瑣。

我想很多人接觸到的第一個例子應該是幫助文檔上參數為空返回全部的sql語句:SELECT *FROM 訂單 where 1=1${if(len(area) == 0,"","and 貨主地區 = '" + area + "'")} ${if(len(PRovince) ==0,"","and 貨主省份 = '" + province + "'")}

下面舉個調用FR中format的例子:

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

如果漏掉format函數前后的單引號,就會得到錯誤的結果。其實有的時候可以通過一些方法簡化處理的,比如再聲明一個變量p2,引用這個變量的定義是format(p1,"yyyy-MM-dd"),這時候上面的sql就變成了select '${p2}' from aa 【當然如果沒有加引號的話那p2就被解析為一個字段名了,這是動態字段的實現方法了】

對于存儲過程,數據集定義這地方其實是支持call和exec的調用方法的。

3.sql中調用sql函數

前面說到,sql語句其實是字符串。其實是可以從數據庫調用字符串作為一個sql語句進行操作的。這個要用到sql函數了,說例子:

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

test這個表里面的第二條數據的testtext字段就是字符串 select top 1 地區 from 銷量

可以把這個字符串用在sql公式中作為sql語句執行

數據集定義那邊這么寫是可以的 ${sql("FRDemo","select testtext from test where id =2",1,1)}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙江县| 枣阳市| 宿迁市| 阆中市| 昌平区| 射洪县| 浦城县| 尼木县| 武义县| 新兴县| 汉沽区| 北海市| 威海市| 高唐县| 东乌珠穆沁旗| 丽江市| 宁城县| 冀州市| 连江县| 西林县| 新蔡县| 新干县| 吉安县| 扎赉特旗| 常德市| 东城区| 沛县| 乌鲁木齐市| 天长市| 读书| 西林县| 彭州市| 宜君县| 西和县| 秦安县| 吉木乃县| 梓潼县| 郑州市| 个旧市| 安泽县| 龙井市|