巧用標誌欄位實現填報資料的暫存與鎖定
需求場景
在使用者錄入完資料後,如果能確保資料正確,可以在頁面端點選鎖定按鈕,從而將資料鎖定,以便防止誤操作對資料產生影響,並且限定鎖定狀態的資料才是有效資料,在查詢統計時只需要統計有效資料。
解決方案
針對這個需求,我們可以在資料表中增加一個標誌欄位,透過該標誌欄位的狀態來確定資料是否處於“鎖定”狀態。
下面是具體的實現步驟:
一:在資料表中增加欄位:flag
FLAG 欄位為 0 時表示資料為暫存資料,為 1 是表示是鎖定資料
二:根據需求製作訂單明細表,表樣如下圖:
A3 單元格型別為維度格,表示式為 =dd.(DDID), 欄位名稱設定為:dd.DDID
B3~E3 單元格型別為數值格,欄位名稱分別設定資料表中對應的名稱。
資料處理中使用多源 SQL,資料來源為:
接下來就看一下如何透過增加標誌位欄位進行資料控制。
在報表後追加一資料列(F 列),將 F3 單元格設定成數值格,並在欄位名稱屬性處設定“FLAG”,這樣就能在 F3 單元格取出狀態位,其餘單元格可根據 F3 的值進行是否可寫控制,值為 1 時為鎖定狀態。
在 B3~E3 單元格的是否可編輯表示式中寫入表示式:F3!=“1”, 這樣當 F3 單元格的值不為 1(非狀態鎖定)時,這些單元格可編輯。
現在報表展現時就能夠根據狀態位的值來控制資料是否可被修改了。接下來再看一下,如何控制狀態位的標誌值。
使用者操作時是在頁面端點選鎖定按鈕,所以可以在點選該按鈕時先更改報表中的狀態位,然後再執行資料儲存操作,而更改狀態位的值可以透過 javascript 指令碼更改報表單元格 (F2) 的值來實現。
接下來看下 F2 單元格設定,如圖:
F2 單元格既要接受 js 控制,又要將值回寫到資料庫表中。在透過多源 SQL 回寫資料時,需要設定表示式,這裡將 F2 單元格型別設定成數值型,欄位名稱中寫入:a.TYPE,表示 F2 單元格放入物件 a 中,名字為 TYPE,並且該單元格要讀取資料表中的初始值,所以單元格中寫入 =F3。然後在資料處理的資料去向中設定如下:
也就是說,儲存時會將 a.TYPE 的值儲存到 FLAG 欄位中。這裡對透過 string() 函式把 a.TYPE 轉換成字串,這樣就可以將 F2 單元格的值儲存到資料庫表的對應狀態位中。F 列為控制狀態列,設定完成後將列寬設成 0 即可。
接下來看一下如何動態更改 F2 的值。
1、 在填報表工具條中增加鎖定按鈕。
填報表工具條是在 showInput.jsp 中引入的:inputtoolbar.jsp,用文字編輯器開啟,在裡邊增加一個按鈕:
<a %>');return false;" href="#">鎖定</a></li>
注:按鈕樣式可自行設定,此處用簡單的文字。
2、 在 showInput.jsp 中增加 js 函式
function save(arg1){
document.getElementById(arg1+“0_F”+2).setAttribute(“value”,“1”);
_inputSubmit(arg1);// 儲存報表
}
該 js 函式控制,如果頁面端點選鎖定按鈕後,將 F2 單元格的值設成 1,然後再執行儲存報表操作,從而能夠將標誌位儲存到資料庫中。
頁面如下:
再將 F 列隱藏掉即可(列寬設成 0)
這樣,我們就實現了點選“鎖定”按鈕將資料鎖定以防在頁面端再次修改。
如需要在查詢統計時只針對鎖定的有效資料,那麼只需要在 where 條件中增加 FLAG=’1’就行了。
需求擴充套件
有了標誌位的使用,在實際中可以做更復雜的控制,比如將填報嵌入業務流程中,實現資料的稽核,回退,入庫等操作,後續文章我們會做詳細的介紹。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2667019/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 欄位修改記錄操作日誌的實現
- 巧用fastjson自定義序列化類實現欄位的轉換ASTJSON
- Mysql資料庫建立儲存過程實現往資料表中新增欄位的方法MySql資料庫儲存過程
- 怎樣實現填報表定時提交
- 序列化,資料庫存多個欄位資料資料庫
- ABL讀取XBL設定的標誌位
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- 如何實現掃碼填報資訊
- 主表子表動態欄位儲存實現方式總結
- 實現報表資料分庫儲存
- 【MybatisPlus】資料庫的datetime型別欄位為空的時候,報錯空指標?MyBatis資料庫型別指標
- 資料庫中的圖片欄位怎麼在報表中呈現資料庫
- 巧用 Base62 解決欄位太短的問題
- mssql sqlserver 可以儲存二進位制資料的欄位型別詳解SQLServer型別
- vxe-table 實現表格資料分組,按指定欄位資料分組
- Java讀取暫存器資料的方法Java
- 如何定製化Fiori標準應用裡UI欄位的標籤UI
- SpringBoot+ Sharding Sphere 輕鬆實現資料庫欄位加解密Spring Boot資料庫解密
- 模型資料追加欄位模型
- 普通填報表單元格實現資料二次篩選
- RestCloud ETL實踐之無標識位實現增量資料同步RESTCloud
- Redis 實戰篇:巧用資料型別實現億級資料統計Redis資料型別
- 填報表實現隔行異色的效果
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- innodb儲存引擎鎖的實現(一)儲存引擎
- redis對hash欄位加鎖Redis
- 下一個失業潮與就業潮並存的崗位——資料標註員就業
- RocketMQ(十):資料儲存模型設計與實現MQ模型
- 【STM32】【暫存器】暫存器位讀寫方式配置系統時鐘
- SAP CRM銷售訂單UI上的欄位對應的資料庫表儲存欄位:requested start date和end dateUI資料庫
- 建模:標識欄位 - Dan
- postgresSQL 實現資料修改後,自動更新updated_date/ts等欄位SQL
- 填報表之資料留痕
- DB2巧用欄位自動增長主鍵的方法DFDB2
- mybatis 實體類排除資料庫欄位對映MyBatis資料庫
- Redis 實戰篇:巧用Bitmap 實現億級海量資料統計Redis
- c++ string 識別標誌位並解析標誌位後面的字元C++字元
- 金蝶雲星辰與旺店通的庫存資料整合實現