反饋已提交

網絡繁忙

複選元件多值入庫不正確

1. 概述

1.1 問題描述

在製作填報範本時,經常遇到儲存格元件勾選了多個指標,出現以下兩種情況:

1)當填報時存在主鍵時,即做修改操作,提交成功後卻只保留了一個值。

舉例:

我們在「下拉複選框元件」勾選了「佳佳樂、康富食品、秒生、為全」 4 個指標後提交入庫,重新整理頁面後,發現只保留了一個最後勾選的指標「為全」。

复选控件多值入库不正确1.gif

2)當填報時不存在主鍵時,即做新增操作,提交成功後資料庫則會錄入多筆資料。

舉例:

使用「產品」表新增一條測試資料進行填報,供應商選擇了 3 個指標後提交入庫後,發現「產品」表中新增了 3 筆資料。

而我們希望「下拉複選框元件」多選值提交後,能在一筆資料中正確顯示多個值,該如何處理呢?

1.2 解決思路

「下拉複選框元件」的回傳值類型預設為「陣列」,上述兩種情況回傳值類型需要為「字串」,所以導致填報結果不正確。

處理方法:將「下拉複選框元件」的回傳值類型由「陣列」改為「字串」即可。

注:修改操作和新增操作的解決思路一致。

2. 範例

2.1 準備範本

開啟內建範本 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Form\LineForm\LineForm1.cpt

2.2 設定下拉複選框元件

將 D3 儲存格元件修改為「下拉複選框元件」,回傳值類型為「字串」,其他預設。步驟如下圖所示:

2.3 設定資料字典

給 D3 儲存格設定「資料字典」,類型設定為「資料庫表」,資料庫選擇「FRDemoTW」,資料庫表選擇「供應商」,實際值為「供應商ID」,顯示值為「公司名稱」。步驟如下圖所示:

2.4 設定公式形態

選中 D3 儲存格,設定「儲存格屬性>形態>公式形態」,定義公式形態:sql("FRDemoTW", "select DISTINCT 公司名稱 from 供應商 where 供應商ID in ('" + $$$ + ")", 1,null)

步驟如下圖所示:

注:公式 sql("FRDemoTW", "select DISTINCT 顯示值欄位 from 表名 where 實際值欄位 in (" + $$$ + ")", 1,null)  使得滑鼠離開儲存格時,儲存格內容能展示顯示值而不是實際值。

2.5 修改欄位類型

設計器內建資料庫表「產品」中「供應商ID」欄位類型為 integer,需要先將其修改為 text 類型,才可以儲存字串類型的值。否則提交入庫時會提示報錯:資料列類型不匹配。

2.6 效果預覽

1)PC端

儲存報表,點選「填報預覽」,效果如下圖所示:

复选控件多值入库不正确2.gif

2)行動端

儲存報表,點選「行動端預覽」,點選「填報」,App 端和 H5 端均支援,效果如下圖所示:

复选控件多值入库不正确3.gif

注:下拉複選框元件、無線電鈕組元件、複選框組元件 等多選元件都有類似的問題,請參考本文檔處理。

3. 範本下載

已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Form\LineForm\下拉複選框多選值進行填報時出現的問題及解決方案.cpt

點選下載範本:下拉复选框多选值进行填报时出现的问题及解决方案.cpt



附件列表


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

文 檔回 饋

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

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

不再提示

10s後關閉