填報指令碼之輕鬆搞定複雜表的資料入庫

bubblegum發表於2019-12-18

你還認為填報表只能完成標準行列布局的資料填報?還在因表樣複雜,填報分片錯亂,設計不夠靈活而苦惱?還在為業務填報表樣設計靈活,但資料不能實時入庫而感到惋惜?

那要先“祝賀”看到這段話的你了,這個難題遇到 集算器指令碼迎刃而解了。(撒花撒花….)

下面來舉慄證實一下。

瞭解基本情況:

某單位上級下發統一報表模板其中包含 5 列(即 5 個欄位),下級操作時隨時可能在原表基礎上增加欄位,且增加的欄位不需要回填至中央資料庫,且下級報表操作人員不具備開發報表的能力。

瞭解基本情況後,綜合考慮建議採用業務填報表來實現,原因業務填報表對使用者的要求比較低,簡單來說會用 Excel 畫表就行。但是此時有一個實際問題是我們不得不考慮的,那就是業務填報表不能將資料及時的錄入到資料庫中,需要手動處理入庫這樣很可能會出現資料遺漏的現象。

疑難點:

業務填報最終以外存檔案(json/binary)的形式儲存資料,那麼,怎麼保證這些資料能在提交後即使入庫呢?

今天我們就重點說道說道,怎麼樣才能保證業務填報的資料能夠及時的入庫。

以流動資產統計表為例,操作如下:

1png

以 sqlserver 2008 資料庫作為中央資料庫,表結構如下:

CREATE TABLE [dbo].[ZCB1](

[id] [int] IDENTITY(1,1) NOT NULL,

[zc] [varchar](50) NULL,

[ncye] [varchar](50) NULL,

[qmye] [varchar](50) NULL,

 CONSTRAINT [PK_ZCB1] PRIMARY KEY CLUSTERED 

(

[id] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

報表設計介面,如下:

2png

其中

A3-A5, 單元格設定單元格型別為“維度格”,A3 欄位名稱為“流動資產. 資產”;

B3-C15, 單元格設定單元格型別為“數值格”;

B16 表示式為:=sum(B3:B15)

C16 表示式為:=sum(C3:C15)

此時,業務填報表就做好了,釋出到 web 端就可以實現資料的填報錄入。

注意還沒完現在的資料還是以外存檔案的形式儲存,下面重點要來了,我們透過集算器指令碼將 json 的資料入庫,指令碼(json.dfx)如下:

3png

其中

A1  使用 connect() 函式獲取資料庫的連線

A2-A4  使用 file() read() import() 函式將外存檔案轉成序表

A6  使用 db.update() 函式將序表內容儲存至資料庫

A7  使用 db.close() 函式關閉資料來源連線

到這裡已經完成了一大步,最後,將執行指令碼與填報表的提交操作繫結。

操作如下:

1. 在報表展現的 jsp 中使用回撥函式,提交後自動執行 json.dfx 進行資料入庫操作。

4png

2. 新建 other.jsp,呼叫 dfx 並執行,如下:

5png

到這裡,就實現了業務填報資料及時入庫的操作了。有木有喜歡集算器指令碼多一點了。想要 get 更多抓緊關注吧。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2669210/,如需轉載,請註明出處,否則將追究法律責任。

相關文章