1. 智能提交
1.1 應用場景
智能提交将插入、更新、删除操作三合一。填報提交時後台會對插入、更新以及删除操作進行判斷,若您填報時有兩種以上的操作需求時,就可以選擇智能提交類型。
1.2 提交邏輯
智能提交時會判斷是否存在報表主鍵,若存在則更新提交,若不存在則插入提交。因此會降低填報入庫的效率。所以若您只使用某一種提交時,選擇其他對應的提交類型即可。
如果頁面存在删除行按鈕,智能提交數據的時候(先點擊删除行,再點擊提交)會進行删除提交。
若您插入了多條空白數據,但對空白行沒有進行編輯,那麽 FineReport 會将這些記錄的值都識别爲 null,對於這種記錄,不會入庫,即空白記錄不入庫。
注:設置未修改不更新後,填報預覽報表,記錄所在單元格沒有被編輯修改,則此記錄不會進行更新;在大數據量記錄查詢并回填情況下,啓用該設置,可以提高填報提交性能。
1.3 效果預覽
1)設計填報表格時,展示模板原始已有數據,如下圖所示:
2)報表填報屬性中設置了提交類型爲智能提交,如下圖所示:
3)未填報前前端預覽如下圖所示:
4)同時執行新增、修改、删除記錄操作,如下圖所示:
2. 删除提交
2.1 應用場景
删除提交只能用來删除數據。如果需要保留的數據很少,而需要删除的數據很多的時可以使用删除提交方式。
2.2 提交邏輯
跟智能提交的删除操作完全相反,前端删除的數據保留,留在頁面的數據點擊提交後會被删除。
注:設置删除提交時,模板中需要展示原始已有數據,另外需要勾選報表填報屬性中的某列作爲報表主鍵。
2.3 效果預覽
1)設計填報模板時,展示原始已有數據,如下圖所示:
2)報表填報屬性中設置了提交類型爲删除提交,如下圖所示:
3)前端填報效果如下圖所示,也就是說删除保留在填報頁面上的所有數據,這裏的删除邏輯跟智能提交删除操作完全相反。
3. 插入提交
3.1 應用場景
插入提交只能用來插入數據,且模板中不能展示原始已有數據,填報頁面必須是空白無數據的。
3.2 提交邏輯
跟智能提交的插入操作相同,只是必須要求插入數據時,填報頁面是沒有其他原始數據的,必須爲空白。
注:空白記錄點擊提交後并不會入庫。
3.3 效果預覽
1)填報表格中不展示原始已有數據,如下圖所示:
2)報表填報屬性中設置了提交類型爲插入提交,如下圖所示:
3)插入數據後,點擊提交按鈕,數據即成功入庫,如下圖所示:
4)查看數據庫表信息,可以看到數據表中新增了一條數據,如下圖所示:
3.4 注意事項
3.4.1 重複入庫
填報模板中展示原始已有數據且數據表中未設置主鍵的情況下,使用插入提交插入數據時,原始數據會再次執行插入操作,導緻數據重複入庫。
查看數據庫表信息,可以看到有 2 條 ID 爲 6 的重複數據,如下圖所示:
3.4.2 主鍵限制
如果數據庫表中設置了主鍵,如下面示例中的 ID 字段,且存在一條 ID 爲 6 的記錄,如下圖所示:
使用插入提交一條 ID 爲 6 的記錄時,入庫失敗且有報錯信息:UNIQUE constraint failed: Sales.ID,即設置主鍵的前提下不允許提交重複數據。