反饋已提交
網絡繁忙
資料集函式 能夠從資料集中直接進行條件取數,但是有的時候使用者希望某個儲存格能夠直接獲取到資料庫中的某個值,而不是先要定義一個資料集後,再去取資料。
這時就可以用 SQL 函式。
注:行序號可以省略,這樣傳回值為資料列。
僅支援執行select查詢語句,不支援執行insert、delete、update等增刪改語句。
範例資料:內建資料庫 FRDemoTW 中的 STSCORE 資料表。
從內建資料庫「FRDemoTW」裏的 STSCORE 表取第三行第三列資料值。
從表 STSCORE 中,可看到第 3 行第 3 列的值為 Alex,如下圖所示:
現在若要直接在報表的儲存格中顯示資料值:Alex,而不是透過先定義一個資料集後,再去取資料的方式,使用 sql() 公式,此時只需在儲存格中輸入:=sql("FRDemoTW","SELECT * FROM STSCORE",3,3)即可,預覽就可看到 Alex 值,如下圖所示:
需要取出班級為 Class1 的第 3 列所有值。
在儲存格中輸入:=sql("FRDemoTW","SELECT * FROM STSCORE where CLASSNO = 'Class1' ",3),顯示效果(班級為 Class1 的第 3 列所有值),如下圖所示:
公式說明:
若需要顯示某個具體值,如顯示 Jonny (即班級為 Class1 的第 3 列第 4 行的值),寫法如下:
=sql("FRDemoTW","SELECT * FROM STSCORE where CLASSNO = 'Class1' ",3,4)
注:不支援引用資料參數。
若參數值為變數如為報表參數或者是某個儲存格,則寫法如下:
11.0.18及之後版本支援較安全的SQL防注入寫法:
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '${class}' ",3,4)
所有版本支援:
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+$class+"' ",3,4)
或=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+A1+"' ",3,4)
例如希望過濾元件選擇不同班級,顯示不同班級下所有的同學的名稱。
首先設定 範本參數「class」,然後在儲存格中輸入公式:=sql("FRDemoTW","SELECT * FROM STSCORE where CLASSNO = '${class}' ",3),如下圖所示:
顯示效果如下圖所示:
如果傳遞的參數是獲取當前儲存格的值,即用 $$$ 作為參數時,字串類型同樣需要連結單引號,例如:
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '${$$$}' ",3,4)
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+$$$+"' ",3,4)
注1:如果參數或者儲存格值有多個,那麼 SQL 函式的寫法如下:=sql("FRDemoTW","SELECT * FROM STSCORE where CLASSNO in ('${class}') and COURSE in ('${COURSE}') ",3,4)"
注2:class 參數傳回值的分隔符需為',',具體請查看SQL語句實現下拉框參數聯動。
在 SQL 中還可以使用 IF 函式進行判斷並連結範本參數,例如希望實現當參數 class 為空時,選擇全部學生姓名,可輸入公式:
=sql("FRDemoTW","SELECT * FROM STSCORE where 1=1 "+if(len(class)== 0,"","and CLASSNO = '${class}'"),3)
這裏的+是指字串連結符號
將前面的 SQL 語句透過+進行連結
當參數「class」為空,查詢語句相當於:SELECT * FROM STSCORE
當參數「class」不為空時,查詢語句相當於:
SELECT * FROM STSCORE WHERE 1=1 and CLASSNO ='"+$class+"'
當參數「class」為空,相當於:sql("FRDemoTW","SELECT * FROM STSCORE",3)
當參數「class」不為空時,查詢語句相當於:sql("FRDemoTW","SELECT * FROM STSCORE WHERE 1=1 and CLASSNO ='${class}'",3)
如果在 SQL 中參數為模糊查詢時,可使用如下公式:
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO like '%${class}%' ",3,4)
=sql("FRDemo","SELECT * FROM STSCORE where CLASSNO like '%"+$class+"%' ",3,4)
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙