反饋已提交
網絡繁忙
本文學習視頻:填報聯動
填報時希望某個儲存格填入資料後,其他相關儲存格自動從資料庫獲取到對應資料,如下圖所示:
有三種方法可以實現填報聯動效果:
使用 value()函式 實現。支援擴展場景,效能較好。
使用 ds1.select()函式 實現。支援擴展場景,效能一般。
使用 SQL函式 實現。支援擴展場景,大數據量下效能較差。
注1:不支援層次座標聯動,例如A1[A1:-1]、A1[!0]、A1{A1=1}、&A1等。
注2:不支援三級聯動,即B根據A聯動的情況下,C無法根據B聯動。
1)建立普通報表,設計填報表格,A3 儲存格新增下拉框元件,B3~F3 新增文字框元件,如下圖所示:
2)A3 儲存格設定縱向擴展,否則新增多行時會有限制。如下圖所示:
選中 A3 儲存格,給下拉框元件綁定資料字典,如下圖所示:
增加資料集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)
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)
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)
如果有插入行的需求,那麼需要透過設定插入行策略,來讓插入的行也能繼承聯動的效果。
選中 B3~F3 儲存格,將儲存格的插入行策略修改為原值,如下圖所示:
注:如果在填報時修改了聯動公式所在儲存格(B3~F3)的值,那麼新輸入值會把公式改寫掉,導致後續重新選擇產品ID時,該儲存格無法再聯動。如果後續插入行,那插入行繼承原值後也會丟失聯動效果。如有此需求,可參考JS實現根據元件值自動匹配資料解決。
PC 端效果如 1.2問題描述 中所示,支援行動端預覽,效果如下圖所示:
點選下載範本:
方法一:自動匹配-value()函式.cpt
方法二:自動匹配-ds1.select()函式.cpt
方法三:自動匹配-sql()函式.cpt
如果涉及到 Excel 匯入後需要聯動的場景,則需要保證 Excel 中沒有聯動公式所在列,比如範例中的(B3~F3),否則聯動公式會被改寫,導致無法聯動。比如範例中的範本,以下 Excel 匯入是可以聯動的。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙