反饋已提交

網絡繁忙

根據元件值自動匹配資料

1. 概述

1.1 學習視頻

本文學習視頻:填報聯動

1.2 問題描述

填報時希望某個儲存格填入資料後,其他相關儲存格自動從資料庫獲取到對應資料,如下圖所示:

2023-09-20_13-02-20.gif

1.3 實現思路

有三種方法可以實現填報聯動效果:

  • 使用 value()函式 實現。支援擴展場景,效能較好。

  • 使用 ds1.select()函式 實現。支援擴展場景,效能一般。

  • 使用 SQL函式 實現。支援擴展場景,大數據量下效能較差。

注1:不支援層次座標聯動,例如A1[A1:-1]、A1[!0]、A1{A1=1}、&A1等。

注2:不支援三級聯動,即B根據A聯動的情況下,C無法根據B聯動。

2. 範例

2.1 設計填報表格

1)建立普通報表,設計填報表格,A3 儲存格新增下拉框元件,B3~F3 新增文字框元件,如下圖所示:

2)A3 儲存格設定縱向擴展,否則新增多行時會有限制。如下圖所示:

2.2 下拉框設定資料字典

選中 A3 儲存格,給下拉框元件綁定資料字典,如下圖所示:

2.3 方法一:value()函式

增加資料集ds1,sql語句為SELECT * FROM 產品

B3~F3 儲存格新增公式,根據 A3 儲存格下拉框選擇的值,查詢出指定的資料,如下圖所示:

B3~F3 儲存格新增的公式如下

B3:value("ds1",2,1,A3)

C3:value("ds1",5,1,A3)

D3:value("ds1",6,1,A3)

E3:value("ds1",7,1,A3)

F3:value("ds1",8,1,A3)

2.4 方法二:ds1.select()函式

增加資料集ds1,sql語句為SELECT * FROM 產品

B3~F3 儲存格新增公式,根據 A3 儲存格下拉框選擇的值,查詢出指定的資料,如下圖所示:

B3~F3 儲存格新增的公式如下

B3:ds1.select(產品名稱,產品ID=A3)

C3:ds1.select(單位數量,產品ID=A3)

D3:ds1.select(成本價,產品ID=A3)

E3:ds1.select(單價,產品ID=A3)

F3:ds1.select(庫存量,產品ID=A3)

2.5 方法三:SQL()函式

B3~F3 儲存格新增公式,根據 A3 儲存格下拉框選擇的值,查詢出指定的資料,如下圖所示:

B3~F3 儲存格新增的公式如下

B3:sql("FRDemoTW","select 產品名稱 from 產品 where 產品id="+A3,1,1)

C3:sql("FRDemoTW","select 單位數量 from 產品 where 產品id="+A3,1,1)

D3:sql("FRDemoTW","select 成本價 from 產品 where 產品id="+A3,1,1)

E3:sql("FRDemoTW","select 單價 from 產品 where 產品id="+A3,1,1)

F3:sql("FRDemoTW","select 庫存量 from 產品 where 產品id="+A3,1,1)

注:公式裏面產品 ID 對應 A3 儲存格的內容為數字,如果是字串需要修改公式,如:sql("FRDemoTW","select 產品名稱 from 產品 where 產品id='"+A3+"'",1,1)

2.6 設定插入行策略

如果有插入行的需求,那麼需要透過設定插入行策略,來讓插入的行也能繼承聯動的效果。

選中 B3~F3 儲存格,將儲存格的插入行策略修改為原值,如下圖所示:

注:如果在填報時修改了聯動公式所在儲存格(B3~F3)的值,那麼新輸入值會把公式改寫掉,導致後續重新選擇產品ID時,該儲存格無法再聯動。如果後續插入行,那插入行繼承原值後也會丟失聯動效果。如有此需求,可參考JS實現根據元件值自動匹配資料解決。

2.7 效果預覽

PC 端效果如 1.2問題描述 中所示,支援行動端預覽,效果如下圖所示:

2023-09-20_13-08-05.gif

3. 範本下載

4. 注意事項

如果涉及到 Excel 匯入後需要聯動的場景,則需要保證 Excel 中沒有聯動公式所在列,比如範例中的(B3~F3),否則聯動公式會被改寫,導致無法聯動。比如範例中的範本,以下 Excel 匯入是可以聯動的。

附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉