日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

润乾集算报表多样性数据源之动态SQL传递

發(fā)布時(shí)間:2025/3/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 润乾集算报表多样性数据源之动态SQL传递 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大多數(shù)情況下報(bào)表的數(shù)據(jù)源SQL都是固定的,但有時(shí)也需要?jiǎng)討B(tài)變動(dòng)其中某些部分實(shí)現(xiàn)動(dòng)態(tài)拼出,比如在報(bào)表應(yīng)用中允許用戶通過選擇表和字段查詢自己關(guān)心的報(bào)表數(shù)據(jù),報(bào)表開發(fā)時(shí)則希望對(duì)同類報(bào)表(明細(xì)或匯總)使用同一模板。這時(shí)就需要在報(bào)表中接收相應(yīng)參數(shù)拼接出動(dòng)態(tài)SQL進(jìn)行查詢后制作動(dòng)態(tài)報(bào)表。

潤(rùn)乾集算報(bào)表提供了兩種處理動(dòng)態(tài)SQL的方法,使用宏和集算腳本,可以快速完成這類報(bào)表,下面舉例說(shuō)明。

使用宏

????集算報(bào)表提供了宏機(jī)制,通過在動(dòng)態(tài)宏中拼接SQL后交由數(shù)據(jù)集查詢結(jié)果,最后在報(bào)表中使用動(dòng)態(tài)表達(dá)式獲得字段名和字段值完成報(bào)表制作。步驟如下:

設(shè)置報(bào)表參數(shù)

? ? 應(yīng)用中已經(jīng)按照指定的參數(shù)格式將表名、字段名和查詢條件傳遞給報(bào)表,因而報(bào)表參數(shù)設(shè)置如下:

? ??其中cols值:訂單ID,客戶ID,訂購(gòu)日期,發(fā)貨日期,到貨日期,運(yùn)貨費(fèi);

? ??where值:where 貨主地區(qū)='華北' and 貨主城市 in ('北京','天津','張家口','秦皇島') 。

?

設(shè)置宏

? ? 其中值為:"select "+cols+" from 訂單"+where,宏類型為動(dòng)態(tài)宏。

?

設(shè)置數(shù)據(jù)集

在數(shù)據(jù)集中引用上述定義好的動(dòng)態(tài)宏。

?

編輯報(bào)表表達(dá)式

? ? ?由于報(bào)表列都是動(dòng)態(tài)的,無(wú)法事先制作固定列的報(bào)表,需要使用動(dòng)態(tài)列函數(shù)。

這里使用了ds.fname()ds.field()函數(shù)實(shí)現(xiàn)動(dòng)態(tài)列報(bào)表,具體用法可參考集算報(bào)表相關(guān)文檔。最后將輔助的A列和第一行隱藏即可完成報(bào)表制作。

????通過使用宏和報(bào)表的動(dòng)態(tài)函數(shù)可以快速拼接出動(dòng)態(tài)查詢SQL完成動(dòng)態(tài)報(bào)表的制作,宏比較適合邏輯簡(jiǎn)單的情況,如果拼接的SQL比較復(fù)雜,需要進(jìn)行一定的計(jì)算,那么使用宏就比較困難了,這時(shí)候就需要使用集算腳本來(lái)完成。

使用集算腳本

? ? 在集算報(bào)表中,可以通過“集算器數(shù)據(jù)集和“腳本數(shù)據(jù)集來(lái)引入集算腳本實(shí)現(xiàn)動(dòng)態(tài)SQL傳遞的目標(biāo),由于不涉及重用和過多的調(diào)試,這里直接使用腳本數(shù)據(jù)集完成。

集算腳本使得簡(jiǎn)單拼接代碼就可以實(shí)現(xiàn)宏在數(shù)據(jù)源方面的作用。除此之外,腳本還能完成更復(fù)雜一些的運(yùn)算,比如用戶在指定表和列時(shí),有一些列是必選列,即使用戶沒有選擇,在查詢后仍然顯示,這就需要在拼接SQL的時(shí)候事先判斷必選列是否在用戶的選出列中,如果不在,則在后面添加,同時(shí)要保證用戶選出列的次序。

? ? 這里仍然查詢訂單表的數(shù)據(jù),其中訂單ID、雇員ID和訂購(gòu)日期為必選字段,使用腳本數(shù)據(jù)集完成可參考如下步驟:

?

設(shè)置報(bào)表參數(shù)

????與上面的例子類似,報(bào)表中仍然接收選擇列和條件參數(shù)。

? ? 其中cols值:訂單ID,客戶ID,訂購(gòu)日期,發(fā)貨日期,到貨日期,運(yùn)貨費(fèi)

? ? where值:where 貨主地區(qū)='華北' and 貨主城市 in ('北京','天津','張家口','秦皇島')

?

設(shè)置數(shù)據(jù)集

????使用腳本數(shù)據(jù)集編寫腳本進(jìn)行SQL拼接和取數(shù)工作,并返回結(jié)果集。

? ? 使用集算腳本可以分步編寫計(jì)算邏輯,而且由于其對(duì)集合運(yùn)算的良好支持使得在A2中將所選字段集合與必選字段集合做并集即可獲得所有查詢字段,非常簡(jiǎn)單。其中:

? ? A1:所有必選字段的集合

? ??A2:將用戶選擇的字段集合與必選字段集合求并集,以保證保證所有必選字段都能選出

? ??A3-A4:執(zhí)行拼接好的SQL取數(shù)

? ??A5:為報(bào)表返回結(jié)果集

?

設(shè)置報(bào)表表達(dá)式

報(bào)表表達(dá)式設(shè)置與前面使用宏中的設(shè)置一致,這里不再重復(fù)。

?

????在集算報(bào)表中提供的兩種處理動(dòng)態(tài)SQL的方式可以很方便地完成類似的任務(wù),宏適合只進(jìn)行簡(jiǎn)單替換的場(chǎng)景,而復(fù)雜的情況,需要一定計(jì)算才能得到最終的SQL語(yǔ)句的場(chǎng)景則需要使用集算腳本(腳本數(shù)據(jù)集),在實(shí)際業(yè)務(wù)中用戶可以根據(jù)情況進(jìn)行選擇。




轉(zhuǎn)載于:https://blog.51cto.com/report5/1590714

總結(jié)

以上是生活随笔為你收集整理的润乾集算报表多样性数据源之动态SQL传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。