開發高水準的管理資訊系統(MIS),資料庫選型至關鍵。經多方評估,我們採用 Oracle 7(於 UNIX 平台),搭配 PowerBuilder 5.0、VB 4 等前端工具,成功建置穩定、高效的企業級 MIS。本文分享資料管理、文字/圖像處理、加密、匯出等實戰技術與經驗。
-- 設定交易物件並檢索
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
-- 新增/刪除列
dw_1.InsertRow(dw_1.GetRow() + 1)
dw_1.DeleteRow(0)
-- 更新入庫
dw_1.Update()
COMMIT;
-- 列印
dw_1.Print()
關鍵技巧:PB5 的 Blob 變數中轉,處理換行符(CR/LF),再寫入/讀出 LONG 欄位。
// 讀入檔案 → Blob → 字串 → 移除 CR/LF → 存入 MLE
fileopen → fileread → string(blob) → replace(char(13)+char(10), "") → mle_1.text
// 寫入資料庫
UPDATE table SET long_col = :blob_var WHERE ...;
// 讀出顯示
SELECT long_col INTO :blob_var FROM table WHERE ...;
mle_1.text = string(blob_var)
重新產生文字檔:SELECT long_col INTO :blob_var ...; filewrite(fh, blob_var)
// 讀入圖檔 → Blob → 顯示於 Picture 控制項 → 存入 LONG
fileopen(picname) → fileread(fn, pict_blob) → setpicture(p_1, pict_blob)
UPDATE pic_table SET bmp_col = :pict_blob; COMMIT;
大檔案可分塊寫入(LONG 理論上限 2GB)。
Oracle 7.3 後不再支援 SQL*Net TCP/IP V1。Client 端請透過 ORAINST.EXE 安裝:
網路廠商選 Microsoft Windows NT TCP/IP 3.1。複製 Server 端 tnsnames.ora 至 Client c:\orawin\network\admin,內容範例:
ORA7 = (DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=111.1.1.1)(PORT=1521))
(CONNECT_DATA=(SID=ORA7))
)
以 sqlplus scott/tiger@ORA7 測試連線。
不將密碼明文存表,改用複雜函數運算驗證/修改密碼(PB5 範例):
// 密碼格式:舊密碼/新密碼
password = sle_1.text
IF pos(sle_1.text, "/") > 0 THEN
old_pwd = left(sle_1.text, pos-1)
new_pwd = mid(sle_1.text, pos+1)
SELECT dwbm INTO :dm FROM dw WHERE mm = :old_pwd;
IF sqlca.sqlcode <> 0 THEN MessageBox("錯誤","舊口令錯誤")
ELSE
IF new_pwd <> "" THEN
SELECT dwbm INTO :chk FROM dw WHERE mm = :new_pwd;
IF sqlca.sqlcode = 100 THEN -- 新密碼未被使用
UPDATE dw SET mm = :new_pwd WHERE mm = :old_pwd; COMMIT;
END IF
END IF
END IF
END IF
PB5 一鍵匯出:dw_1.SaveAs("c:\report.xls", Excel!, TRUE)。再利用 Excel 樣板與資料連結,產出格式化報表。
Oracle 日期常數格式:'DD-MON-YY'(如 '01-FEB-96')。
錯誤範例:UPDATE tab SET rq = '1996-02-01'; → 隱性轉換失敗。
正確:UPDATE tab SET rq = '01-FEB-96'; 或使用 TO_DATE 明確轉換。
Oracle 7 的穩健效能與豐富功能(LONG、Blob、分散式、安全性)是 MIS 成功關鍵。未來將升級 Oracle 8/8i,結合 Web 技術與多媒體,打造新一代網路化、多媒體化 MIS。