潤乾集算報表用指令碼實現動態SQL傳遞,報表sql

來源:互聯網
上載者:User

潤乾集算報表用指令碼實現動態SQL傳遞,報表sql

   大多數情況下報表的資料來源SQL都是固定的,但有時也需要動態變動其中某些部分實現動態拼出,比如在報表應用中允許使用者通過選擇表和欄位查詢自己關心的報表資料,報表開發時則希望對同類報表(明細或匯總)使用同一模板。這時就需要在報表中接收相應參數拼接出動態SQL進行查詢後製作動態報表。

   與一般報表工具需要在第三方程式(如JAVA)中實現不同,在潤乾集算報表中提供了內建的指令碼(資料集),可以快速完成這類報表,下面舉例說明。

 

  某類報表中,使用者在指定表和列時,有一些列是必選列,即使使用者沒有選擇,在查詢後仍然顯示。所以需要在拼接SQL的時候事先判斷必選列是否在使用者的選出列中,如果不在,則在後面添加,同時要保證使用者選出列的次序。

  這裡以查詢某一時間段訂單資訊為例,其中訂單ID、訂購日期、發貨日期、到貨日期為必選欄位,使用指令碼通過如下步驟完成。

 

設定報表參數

  應用中已經按照指定的參數格式將表名、欄位名和查詢條件傳遞給報表,因而報表參數設定如下:


   其中columns值:貨主名稱,運貨商,運貨費;

   conditions值:where 訂購日期>='1996-01-01'and 訂購日期<='1996-12-31'

 

   設定資料集

   使用指令碼資料集編寫指令碼進行SQL拼接和取數工作,並返回結果集。

   使用集算指令碼可以分步編寫計算邏輯,而且由於其對集合運算的良好支援使得在A2中將所選欄位集合與必選欄位集合做並集即可獲得所有查詢欄位,非常簡單。其中:

   A1:所有必選欄位的集合;

   A2:將使用者選擇的欄位集合與必選欄位集合求並集,以保證保證所有必選欄位都能選出;

   A3-A4:執行拼接好的SQL取數;

   A5:為報表返回結果集。

 

   編輯報表運算式

  由於報表列都是動態,無法事先製作固定列的報表,需要使用動態列函數。

   這裡使用了ds.fname()和ds.field()函數實現動態列報表,具體用法可參考集算報表相關文檔。最後將輔助的A列和第一行隱藏即可完成報表製作。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.