2015年8月7日 星期五

Scriptcase 的 pdf 轉出

在 FORM 中的 PDF Export ,如果直接是 表單內容,可以依據表單格式輸出,然而,如果內含有 Master/Detail 的細項內容,就產生錯誤了。

看了 help 教學 Video,似乎要另外用 PDF Application來做才可以。

2015年8月6日 星期四

scriptcase 的 bugs

今天使用 ScriptCase 設計表單,表單日期欄位原本都是正常顯示的,但是當新增一個狀態欄位時,表單日期的顯現出現錯誤了!
原本日期顯示應該是: yyyy/mm/dd
增加一狀態欄位以後,變成: yyyy mm d
該狀態欄位為空白時,日期欄就是正常的;狀態欄位有值時,就變成錯誤格式!

將狀態欄位刪除,日期顯示格式就一切正常!

查看表單日期的資料庫內容,並沒有改變,沒有錯誤。顯示是 Scriptcase 在顯示該表單欄位資料時,由於Scriptcase內部程式的錯誤,某些變數或...相衝,導致顯示格式錯誤!

後來將狀態欄位加回去,將狀態欄位的型態改為 <select>,日期也就好了!
原本狀態欄位型態是 <integer>

註:2015/08/16 剛才又發生一次類似的錯誤。
錯誤的狀況是:一個 integer 欄位型態, 然後用 Lookup Setting 設定為另外顯示該ID的名稱值。但是這樣一來,日期欄位的格式就變了!
將該欄位型態由  Integer 改為 Select ,一樣用Lookup Setting,而 加Where 設定,這樣就只有單一值可以顯示,不會有選項可以選。這樣那個日期顯示就正常了!

2015年8月5日 星期三

ScriptCase master/detail,當Master的一個選項值改變,Detail 要跟著變動,怎麼做?

Master/Detail 是關聯式資料庫概念裡面,經常有的資料庫結構關係。例如:訂單及訂單明細。訂單是 MAster ,訂單明細是 Details
如果由於 訂單的 某個欄位(field1)改變時,而Detail 裡面的選項也要跟著改,那就使用 field1 改變時,整個Form Reload 選項,即可達成目的了。

如果反過來,是 Detail 裡面的值改變時,要更新 Master 的欄位值,則使用 sc_master_value('Object', Value) 

2015年8月1日 星期六

Scriptcase 不能編修了!

經過調查,原來是我的欄位中設了一個 radio 欄位,而其值必須由另一個table產生,只要把這個欄位改成 text 就可以了。
可見,是此欄位的問題。

看來,必需另想辦法了!

使用這種產生器的缺點,就是你最好使用他的功能就好,她畢竟不是萬事都能做的!

2015年7月24日 星期五

scriptcase upload file

中文檔名,不行!
英文檔名,size較小,可以成功,但檔案較大,就不行!
將 php.ini 裡面的
upload_max_filesize = 64M ==> 512M
upload_max_filesize, 
memory_limit, 
post_max_size
max_execution_time

放大後,就可以成功了!

上傳的位置放在 /_lib/file/ 裡面 docnn  nn為id,設定在該form裡面。
他並沒有依照 form 裡面的 Application -> Settings->Document Path 裡的設定放置

如果選擇的是 field datatype -> images(file name),也不會放在 application -> settings -> Image Directory 裡面!

Scriptcase 裡面還是一堆 Bugs!

唉!究竟是我誤解了呢?還是 Bugs!


==============================

multi-upload 功能似乎僅能適用在 Document(database),也就是儲存在 mysql BLOB裡面才可以。用Filename 似乎不行ㄟ!

但是,我不想把附加的檔案文件放到BLOB中,那樣會讓 database太大,以後會麻煩的。






2015年7月22日 星期三

用MySQL的Trigger 自動產生會員編號

想要自己編會員編號,不想用mysql 的 auto-increment自動編號功能。
而這個編號,可能會在不同的 AP 開放輸入,所以,最好的產生方式,是放在資料庫裡面自動產生,所以,就動了 Trigger 的念頭。

經過研究,寫了下面這段:


CREATE TRIGGER `get_ext_id` BEFORE INSERT ON `members`
 FOR EACH ROW BEGIN

    DECLARE v_last_id , v_new_id INT;

    SELECT members_last_id INTO v_last_id FROM members_last_id;
    SET v_new_id = v_last_id + 1;
    UPDATE members_last_id SET members_last_id = v_new_id;
    SET NEW.members_ext_id = LPAD(v_new_id,10,'0');

END


members_last_id 是另外建立的一個 table,裡面只有一個欄位,也叫做:members_last_id,而且只有一筆記錄,就是記錄著欲產生的會員編號的最後一號。

就這樣,可以自動從資料庫裡面,每當有新增時,就會自動產生會員編號。

2015年7月21日 星期二

Scriptcase 建立文字的會員編號

$tmp_str_id = str_pad({members_id}, 10, '0', STR_PAD_LEFT);
// SQL statement parameters
$update_table  = 'members';      // Table name
$update_where  = "members_id = {members_id}"; // Where clause
$update_fields = array(   // Field list, add as many as needed
     "members_ext_id = '$tmp_str_id'"
 );
// Update record
$update_sql = 'UPDATE ' . $update_table
    . ' SET '   . implode(', ', $update_fields)
    . ' WHERE ' . $update_where;
sc_exec_sql($update_sql);

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

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