天天看點

填報腳本之輕松搞定複雜表的資料入庫

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

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

下面來舉栗證明一下。

了解基本情況:

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

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

疑難點:

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

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

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

填報腳本之輕松搞定複雜表的資料入庫

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

CREATE TABLE [dbo].[ZCB1](

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

[zc]

varchar

NULL,

[ncye]

[qmye]

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]

報表設計界面,如下:

填報腳本之輕松搞定複雜表的資料入庫

其中

A3-A5, 單元格設定單元格類型為“次元格”,A3 字段名稱為“流動資産. 資産”;

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

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

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

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

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

填報腳本之輕松搞定複雜表的資料入庫

A1 使用 connect() 函數擷取資料庫的連接配接

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

A6 使用 db.update() 函數将序表内容儲存至資料庫

A7 使用 db.close() 函數關閉資料源連接配接

到這裡已經完成了一大步,最後,将執行腳本與填報表的送出操作綁定。

操作如下:

  1. 在報表展現的 jsp 中使用回調函數,送出後自動執行 json.dfx 進行資料入庫操作。
    填報腳本之輕松搞定複雜表的資料入庫
  2. 建立 other.jsp,調用 dfx 并執行,如下:
    填報腳本之輕松搞定複雜表的資料入庫

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

執行個體