2015年11月25日 星期三

SCriptcase 在 buttom 之後的 error_message

Scriptcase的error handling 提供了內定的 macro 函數:

sc_error_message();
sc_error_exit();

然而,此 sc_Error_message() 函數似乎僅限於在 on_xxx events 中
放在 on_validate 等都work
但是,放到 自訂的 buttom 之後,似乎不work

於是,只好改用

echo "Error: Error message!!!";
sc_error_message("Error: Error Message!!!");
sc_error_exit();

這樣可以出現 echo 視窗。

但是如果只有 
echo "Error: Error message!!!";
sc_error_exit();
 這樣,出現echo 視窗後,還是會繼續執行,不會停止程式。

必需完整的

echo "Error: Error message!!!";
sc_error_message("Error: Error Message!!!");
sc_error_exit();

三段都有才可以。

記錄之,備查!


註:使用 echo "";  可以顯示一個 Output 小視窗。




2015年11月22日 星期日

將經營規則 business rule 寫在 mysql 中

資料庫系統,一定牽涉到資料庫本身,以及應用程式所處理的功能。
這些功能的規則,稱為 Business Rule. 有人翻譯為"商業規則",我認為這個翻譯不大妥當,應該為 "經營規則"。

這些經營規則,以前通常都是在 APP 應用程式中去設計執行,但如果有不同的程式給不同的人使用,而要遵守同一個 business rule ,那就變成必需在各個 AP 中個別去撰寫程式碼,這樣就會有不一致以及浪費時間的現象。

所以,關於這些資料的經營規則 business rule 最好是直接在  mysql 中執行即可,以方便保持資料的一致性,規則的一致性。

使用 mysql 的 STORED ROUTINE(Procedure/Function)及 Trigger Routine 以及Table 間的Foreign Key 規則、Index 唯一或可重複等工具,即可以達到一定的一致性規則。

而畫面的新增/更改/刪除/查詢,則可以很簡單的運用如 Scriptcase 等畫面產生器,就可以輕鬆的完成輸出入界面。


某些技巧:

如果有些程式碼是在特定的情況下才需要被執行,可以設計一個欄位值來控制他。
例如:field: execute_it char(1), Default:"0"
在 update_trigger中的程式可以寫:

IF NEW.execute_it = "1" THEN
    -- Execute some code...
    SET NEW.execute_it = "0";
ELSE
    -- Execute the other code......
END IF;

記得最後必須將 execute_it 的值設回來"0"
    SET NEW.execute_it = "0";



如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。