FineReport

最強大的動態報表與BI商業智慧工具!

FineReport報表填報主鍵空值問題

1. 問題描述
在使用Web報表軟體FineReport製作填報模板時可能會遇到以下問題:資料庫中的A欄位為主鍵,在定義報表填報屬性時設置別的欄位為主鍵,資料庫中有一條記錄是某個報表主鍵對應的欄位值為空,當對這條記錄進行更新時,卻進行了插入提交。
註:在Java報表軟體FineReport中,報表填報屬性設置主鍵,即判斷單元格中的值與資料庫中是否相同,若有相同的則進行更新,若沒有則進行插入
2. 原因
當有空值時,那麼在執行update語句時則where條件後面是「某欄位=null」,而在填報屬性中若where 某欄位=null時,update語句會失效然後便會轉向insert語句,這樣就造成了插入重複數據的現象。
3. 解決方案
首先要知道可能為空的報表主鍵對應資料庫中的數據類型,然後在報表填報屬性設置裡面給對應的欄位的值設置公式:以字元串為例,字元串對應的空值就是空字元串””,則公式為if(單元格=null,””,單元格)
下面以一個實例看一下問題。
3.1 實例
新建工作簿,將A1,B1,C1,D1單元格的控制項類型定義成文本型。
以Employee表為例,此表中的EmpID為主鍵,然後在報表填報屬性處設置EmpName和Sex為主鍵,最後的填報屬性界面如下:
報表填報屬性界面
填報預覽,在A1,B1,D1分別輸入1,Jack,團員,C1不輸入值,點擊提交,提示提交成功。然後同樣再在這幾個單元格中分別插入A1,B1,D1中分別輸入2,Jack,黨員,C1同樣不輸入值,本來應該只剩一條後輸入的記錄的,但是兩條都存在,如下圖所示:
報表填報預覽1
將有可能為空的欄位即Sex欄位對應的值改成if(C1=null,””,C1),然後將資料庫中的這兩個值刪除掉,將這兩條記錄重新插入,資料庫中只剩一條記錄了即對第一條數據進行了更新操作,如下圖所示:
報表填報預覽2

  • 聯繫我們

  • 電話:0933-790886
  • 邮箱:brian.wang@fanruan.com
  • 地址:300 新竹市學府路40號 (交大育成中心 R302)
  • 臉書粉絲團
Copyright©2017 Fanruan Software Co.,Ltd. All Rights Reserved. 帆軟軟體有限公司 | 蘇ICP備14031611號-8

返回頂部