1. 程式人生 > >多值模糊查詢報表的制作

多值模糊查詢報表的制作

程序 字段名 text 遇到 ODB 模板 區域 one ima

在數據查詢系統中,經常會涉及到模糊查詢和多值查詢。對於模糊查詢,我們可能都有所了解。就是根據用戶在參數框中輸入的關鍵字進行模糊匹配,這在SQL中是通過like條件實現的。而多值查詢則大多是一次在參數框中輸入2個以上關鍵詞,以字符串組,整數組等形式進行參數傳遞,這在SQL中是通過in條件完成多值匹配的。

但是用戶的需求往往是無止境的!最典型就是把這兩種好使的方法結合起來,也就是兩種查詢的結合–在參數框中輸入多個關鍵字,根據多個關鍵字進行模糊查詢。比如,用戶要根據產品名稱進行多值模糊查詢,當輸入為“奶酪,糖”時,希望找出產品名稱中含有奶酪或糖的產品列表,如下圖所示:

技術分享圖片

為了程序猿哥哥可以早日跟加班say goodbye , 不再做單身汪(咦?為什麽我這麽熱心?),讓我們一起了解一下潤乾報表是怎麽做到兩種查詢的完美結合的……

一共需要……1、2、3、4步:

1.定義主表模板:

技術分享圖片

其中
1-3行設置行屬性為報表頭,其余行為數據區即可。

B3單元格表達式為:=macro1,目的是顯示查詢條件的拼接結果,以便校驗最終數據是否正確。

A5單元格表達式為:=ds1.select(產品ID),目的是取數ds1結果集中所有的產品。

B5-F5 單元格表達式為:=ds1.字段名稱,目的是根據前面的產品編號取出對應的產品信息

2.定義參數:

技術分享圖片

其中
cpmc是普通參數,就是用戶填入的查詢值;

macro1是動態參數,根據cpmc拼接查詢條件,值表達式為:if(cpmc == null or cpmc==””,”1=1″,”產品名稱 like ‘%”+replace(@cpmc,”,”,”%’ or 產品名稱 like ‘%”)+”%'”)。這裏的動態參數,它不僅是用於在報表結果頁面裏面顯示查詢條件的拼接結果,而且也用於對sql進行數據篩選。

再詳細說明一下:當cpmc為空時,返回1=1,表示查詢全部數據,否則先用字符串替換函數replace()把參數中的”,”替換為”%’ or 產品名稱 like ‘%”)+”%'”(註意其中的空格),替換後的結果再和前後字符串拼接得到最終的查詢條件。例如當用戶輸入“奶酪,糖”,那麽replace的替換結果就是“奶酪%’ or 產品名稱 like ‘%糖%’,再和前後字符串拼接得到最終結果為 產品名稱like ‘%奶酪%’ or產品名稱 like ‘%糖%’。

3.定義數據集:

技術分享圖片

這裏在查詢條件中用到了參數的特殊用法${參數名},相當於一個占位的效果,查詢時會用前面定義的動態參數內容填充到這個位置。

:第2 – 3步的設置均在主表模板中添加。

4.定義參數模板:

技術分享圖片

在報表工具設計區域右側的屬性欄中將B2的單元格web變量名設置為cpmc。

Bingo,多值模糊查詢就這樣完美地實現了!

回顧

我們來回顧一下其中遇到的問題和解決的技巧:

1、數據集SQL實現動態取數:

使用參數的${參數名}用法

2、 查詢條件為空,查詢全部:

使用參數1=1的用法

3、多值匹配:

以“,”分割多個查詢關鍵字,拼接成多個 or 相連的like條件。

最後我們發現,其實這裏僅僅用了潤乾報表的參數特殊用法和SQL 查詢條件的拼接是不是一不小心,又雙叒叕get了新技能?這樣下去,用不了多久是不是就可以拒絕加班,拒絕做單身汪了,竊喜吧。

快來加入潤乾大家庭,get更多快速簡便的報表制作方式吧。

多值模糊查詢報表的制作