天天看點

行式填報之主鍵設定

填報功能是報表工具不可或缺的功能之一,此功能可以讓使用者在頁面中進行資料維護操作。特别是在行式填報中,使用者不僅可以修改資料,而且可以插入 / 添加新資料或删除已有資料。這樣,在更新行式填報頁面中的資料記錄時,主鍵字段就會涉及 insert 和 delete 操作,而對于不同類型的主鍵我們應該如何進行更新設定?有哪些方面是需要我們注意的呢?下面我們将以雇員資訊表的維護為例探讨一下主鍵設定的相關内容。

附 Employee 表結構:

行式填報之主鍵設定
先準備一張行式填報表,制作效果如下圖所示:
行式填報之主鍵設定

(行式填報表快速制作教程參見 資料維護不求人,一招搞定增删改 )

來源腳本設定:

行式填報之主鍵設定

重點來啦 ~~ 去向腳本中不同的主鍵類型應該如何配置呢?我們來逐個攻破:

1.單主鍵

Employee 表的主鍵為 empno,那麼腳本中的 update 函數配置為:

A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;empno)

在英文分号後面配置主鍵 empno,報表在做更新處理時,會以 empno 為主鍵對比 employee 和 employee_old 對象的資料,然後将差異資料更新到表 employee 中。

完整版腳本内容如下圖所示:

行式填報之主鍵設定
2.多主鍵

一般情況下,實體表隻設定一個主鍵字段就可以将資料記錄區分開來,特殊情況下會設定兩個及以上主鍵字段,例如上述 employee 表我們可以通過 empno 字段來區分資料記錄,也可以通過 ename+sex 兩個字段來鎖定唯一一條符合條件的記錄,此時我們的腳本中應該如何設定主鍵呢?            

很簡單,隻需要用英文逗号隔開多個主鍵字段就可以了:

A1.update@k(employee:employee_old,employee,empno,ename,salary,sex;ename,sex)

行式填報之主鍵設定

3.自增主鍵

自增主鍵可以提升查詢效率、節省磁盤空間,在填報中也有廣泛應用。以 mysql 設定為例:可以通過第三方工具(如 Navicat)或者 sql 語句設定某個主鍵字段的資料自動增長。

在資料庫端很容易配置主鍵字段的自動增長,那麼在潤乾報表中如何實作自動增長字段的資料更新呢?很簡單,隻需要添加一個 @1 選項就搞定了。 
           

A1.update@1k(employee:employee_old,employee,empno,ename,salary,sex;empno)

其中,@1 選項表示第一個字段是自增字段,沒有對應更新值表達式

注意:這裡是數字 1 而不是字母 l

行式填報之主鍵設定

4.“動态”主鍵

“動态”主鍵我們了解成通常說的 UUID,表示主鍵的值是一個不重複的随機數,這種方式比自動增長方式更安全、重複率更低。 
    我們以 mysql 資料庫為例,将随機生成的四位數字作為主鍵 empno 的資料,并将資料更新入庫。在潤乾報表中隻需要多一步 run 操作給主鍵字段指派,剩下的和正常更新配置一樣。 
   =employee.run(if(empno==null,~.empno=A1.query(“select round(round(rand(),4)*10000) as xuhao”).xuhao))  // 當 employee 對象中的主鍵 empno 字段為空的時候,我們将随機生成的四位數字指派給主鍵字段            

(這裡為什麼條件是判斷為空呢?因為一般自增主鍵或者 UUID 主鍵都不允許編輯或者直接設定使用者不可見,是以此時新增的記錄中主鍵字段為空。)

行式填報之主鍵設定

至此,我們已經将幾種常見主鍵設定方式探讨完畢,現在回過頭來看填報資料進行中的主鍵設定,是不是有種“wow~~amazing~”的感覺?

如果您在填報學習過程中有任何疑問,歡迎留言,我們一起來盤它!