close

PowerBuilder 提供了最基本的信息盒,但如果都在代碼裏面直接使用的話,那就難以支持多語言、沒彈性、用字也不易統一,因為不同程式員會有不同的習慣,可能 A 程式員用「請問需要儲存嗎?」,B 程式員卻問「是否要保存?」,這讓用戶體驗不好,後續也難以維護。

 

為了改良以上的問題,我們可以在調用 MessageBox() 前多加點功夫。過程中需要:

  • 一個 PB function
  • 信息設定表
  • 日誌表

 

用原來的 PB messagebox() 要這麼寫:

messagebox('問題','確定要把 Q1712220028 的狀態由「正在裝貨」返回到「可裝貨」?', Question!, YesNo!, 2)

 

在新 PB function 只要這麼寫,這裏為方便理解,本來該從數據庫另外取的「正在裝貨, 可裝貨」我就先直接寫出來了:

f_msg('01', '052', 'Q1712220028 ', '正在裝貨', '可裝貨')

  1. 01」是語言編碼
  2. 052」是信息編碼,與「01」加起來就可以找到預設信息:確定要把 % 的狀態由「%」返回到「%」?
  3. 把「%」按順序替換,信息內容就變成了:確定要把 Q1712220028 的狀態由「正在裝貨」返回到「可裝貨」?
  4. 加上設定表中的圖示、按鈕、默認按等就可以調用 MessageBox()
  5. 再按日誌標誌(msg_log)去判定是否需要寫日誌,以下圖為例,在什麼時候彈出信息給誰看,而當時用戶(HLH)點下哪個按鈕(1 - YES) 作回應都記錄下來,以防奧客事後耍賴

msg_log.JPG

 

另外信息編碼也有定位的作用,你可以憑編碼到 PowerBuilder 裏面 Search ,把所有用到這信息的地方都列出來,以作 Debug 之用。要是用戶能提供屏幕截圖,你更可以在指定窗體找到是哪裏彈出的信息呢。

 

CREATE TABLE t_msg_mst(
    msg_code varchar(50) NOT NULL-- 信息編碼
    lang_code varchar(50) NOT NULL, -- 語言編碼
    msg_hdr varchar(255) NULL,      -- 信息標題
    msg_text varchar(255) NULL,     -- 信息內容,「%」為將要換成變量的位置
    icon varchar(50) NOT NULL,      -- 圖示
    button varchar(50) NOT NULL,    -- 按鈕
    set_button int NOT NULL,        -- 默認按鈕
    create_by varchar(50) NULL,     -- 創建人
    update_by varchar(50) NULL,     -- 更新人
    time_create datetime NULL,      -- 創建時間
    time_update datetime NULL,      -- 更新時間
    msg_log char(1) NULL)           -- 是否寫日誌

CREATE TABLE t_log_msg(
    id int IDENTITY(1,1) NOT NULL, -- 主鍵
    msg_code varchar(50) NOT NULL, -- 信息編碼
    lang_code varchar(50) NULL,    -- 語言編碼
    msg_hdr varchar(255) NULL,     -- 信息標題
    msg_text varchar(255) NULL,    -- 信息內容
    prompt_to varchar(50) NULL,    -- 用戶編碼
    feedback varchar(10) NULL,     -- 用戶回應,點了哪個按鈕
    time_create datetime NOT NULL) -- 創建時間

arrow
arrow
    文章標籤
    PowerBuilder 程式開發
    全站熱搜
    創作者介紹
    創作者 過時程式員 的頭像
    過時程式員

    過時程式員的部落格

    過時程式員 發表在 痞客邦 留言(0) 人氣()