如題
只能透過 [session variable]做了。
ScriptCase 的 Form 裡面 --> Fields --> 要的欄位 --> Save Variable:yes --> Variable Name: [xxxxxx]
這樣,就可以在 detail 中使用 該 Session Variable了。
而 sc_master_value('Object', Value) 這個 macro 則是可以 更新 上層ap 欄位的值
Update a data in the Master application in real time according to changes made in a given field of the Detail application.
本網誌記錄網站設計的一些內容筆記。 網站設計需要整合很多工具與概念。 我畢業自淡江電子計算機科學學系,算是科班出身。但我們那個年代(50年代,唉!LKK了!),網路還只是剛開始,相關的技術都是出社會以後陸續接觸學習。 網站的建立與設計,牽涉的範圍真的很廣泛。 網站的目地是甚麼?銷售網頁、電子購物、廣告、社群經營、互動、教學、客戶服務、網站應用程式、...... 需要整合的人才,程式設計師、資料庫管理師、網頁美編、文字編輯、多媒體製作等等。 這裡將記錄一個LKK對網站系統重新學習與複習,還有教學使用的一些資料。
2015年4月24日 星期五
2015年4月23日 星期四
php 加減
有些數字必須這樣處理,才能加減!
floatval(preg_replace("/[^-0-9\.]/","",$orders_shipment_id));
$total2 = floatval(preg_replace("/[^-0-9\.]/","",$total)) + floatval(preg_replace("/[^-0-9\.]/","",$ship_fees));
floatval(preg_replace("/[^-0-9\.]/","",$orders_shipment_id));
$total2 = floatval(preg_replace("/[^-0-9\.]/","",$total)) + floatval(preg_replace("/[^-0-9\.]/","",$ship_fees));
2015年4月22日 星期三
Scriptcase裡Form的 master/detail
ScriptCase 的 Form 裡面的 Master/ Detail 是建立一對多的關聯資料,detail 部分,可以連結到 Grid 或是 Form 都可以。
Grid 當然就是只有可以看,不能編輯、修改;而要期待能編輯、新增、修改、刪除,就必須使用 Form 裡面的 Multiple Records / Editable Grid / Editable Grid view ,咦?好像也可以使用 Single Record喔!就是出現時是一筆一筆出來的。
Grid 當然就是只有可以看,不能編輯、修改;而要期待能編輯、新增、修改、刪除,就必須使用 Form 裡面的 Multiple Records / Editable Grid / Editable Grid view ,咦?好像也可以使用 Single Record喔!就是出現時是一筆一筆出來的。
2015年4月20日 星期一
ScriptCase 裡面的 Link
如果Application 是 Form,允許的 Link 有:Application 、 Capture 兩種
Application Link :
Form 裡面的 fields 如果是 <select> type 的話,在此欄位旁邊可以加上一個 Link到form的連結,這個Link 就只是 Link 過去 edit 一個Form而已,沒有傳參數過去,同時顯示"EDIT"(中文"更改")的一個button。可以打開該欄位內容的 Form 去更改數值。
如果 Application 是 Grid的話,允許的 Link 有:Application 、 Field、Capture 三種
Application Link :
Field Link :
Capture Link :
Application Link :
- Application - Used to link our form to any other type of application. This linking type is associated to events of Inclusion and/or alteration, when occurs one of those events the navigation will be effected to the application that we are calling.
- Capture - Will be created an icon beside the field inside the form, when being selected it opens other window showing a search application. In this application that will be opened can do searches and return a value to text field.
- 選了 Capture 以後,會出現一個欄位選擇,然後選擇一個 Grid 的 Application,此 Grid Application,即是產生來讓使用者選擇欄位值的。
- 注意:選擇連結Capture 的欄位型態不能是<Select>,能夠是 <text>/<integer>等開放輸入欄位,不能是選擇式的,因為,那功能是一樣的,列出來選擇。我試了,如果是<select>,縱使再建立此 Capture Link 也一樣沒有連結東西,將<select>改成<integer> 就有聯結了!
Form 裡面的 fields 如果是 <select> type 的話,在此欄位旁邊可以加上一個 Link到form的連結,這個Link 就只是 Link 過去 edit 一個Form而已,沒有傳參數過去,同時顯示"EDIT"(中文"更改")的一個button。可以打開該欄位內容的 Form 去更改數值。
如果 Application 是 Grid的話,允許的 Link 有:Application 、 Field、Capture 三種
Application Link :
Field Link :
Capture Link :
2015年4月19日 星期日
scriptcase 的bug
好像還蠻多bugs的
在 master/detail 的欄位裡, 設定 detail 沒有新增,但一deploy以後,就一定有"新增"/修改/刪除,奇怪
- master/detail 的 detail (用form做的) 設定沒有AUDI,但 Deploy之後就有!
在 master/detail 的欄位裡, 設定 detail 沒有新增,但一deploy以後,就一定有"新增"/修改/刪除,奇怪
後來,只好改用 grid 來做 detail ,那也可以啦
註:我今天是(20150810)卻發生 Master/Detail裡的Detail設定有AUDI,在開發環境跑都正常,depoly以後,AUDI不見了!太奇怪了!
使用心得:
如果希望 Master/Detail 裡的Detail 需要可以新增刪除修改,那就用 FORM Application來做Detail,而如果希望Detail只需要查詢顯示,不希望可以被編輯,那就使用 GRID Application 來做Detail。
因為,試了很多次,Scriptcase裡面的 Detail 使用Form來製作的話,經常出現問題!
原本在開發環境有AUDI 的,Deploye以後,變不行了!反之亦然!不知道為什麼!
- master/detail-->update_master
建立一個訂單,以及訂單明細,兩個Forms,並在訂單中建立了 master/detail。設計了一個update_master() php程式,更改了 orders table 裡面的 total 欄位,並 呼叫 sc_master_value() 更新 master form裡面的 field ,然後,在 Events 裡面設定,onAfterInsert/onAfterUpdate/onAfterDelete 都呼叫 update_master()函數,結果發現為何資料庫有更新而 master fields沒有更新呢?原來發現,detail form 裡面的 "Form Formats"->"Editable Grid view"-> "Use modal form to edit"->要選擇"No",如果選擇 "yes" ,那麼,onAfterUpdate並不會被執行!
這應該是一個 bug 吧!
使用心得:
如果希望 Master/Detail 裡的Detail 需要可以新增刪除修改,那就用 FORM Application來做Detail,而如果希望Detail只需要查詢顯示,不希望可以被編輯,那就使用 GRID Application 來做Detail。
因為,試了很多次,Scriptcase裡面的 Detail 使用Form來製作的話,經常出現問題!
原本在開發環境有AUDI 的,Deploye以後,變不行了!反之亦然!不知道為什麼!
2015年4月12日 星期日
ScriptCase 的Application 管理
由於在 ScriptCase 裡面,要建立一個 Application 非常容易,所以,很容易就建立了一堆的 Application,然後,久而久之,你就忘了,當初建立它的作用是什麼?亂了!
許多Application 會是另一個 app 的master/detail 裡面的 detail,是他的一部分。此部分,也可以另外單獨執行,可是不一定適合使用。
也有可能被共用!所以,很容易亂掉。
所以,規畫就很重要。
另外,運用 Folder 來分類。
例如:屬於 member的部分app,都放在這個folder裡面,使用到的 detail app ,也放到這裡來,較不會亂。
許多Application 會是另一個 app 的master/detail 裡面的 detail,是他的一部分。此部分,也可以另外單獨執行,可是不一定適合使用。
也有可能被共用!所以,很容易亂掉。
所以,規畫就很重要。
另外,運用 Folder 來分類。
例如:屬於 member的部分app,都放在這個folder裡面,使用到的 detail app ,也放到這裡來,較不會亂。
2015年4月11日 星期六
ScriptCase 裡配合Javascript製作一個button的方法範例
很好的參考範例:
http://www.scriptcase.net/forum/showthread.php?7633-Best-way-to-do-this-in-Scriptcase-Display-Nicely-as-one-field-edit-as-multiple
Block1: 2 Label fields ({myaddress}, {mybtn}).
Block2: Address fields.
Create a javascript method (switchBlocks) with a variable (vswitch) to be passed in.
Create a php method (call_switchBlocks):
onLoad:
onAfterUpdate:
That should give you a start.
另一個案例:
http://www.scriptcase.net/forum/showthread.php?7633-Best-way-to-do-this-in-Scriptcase-Display-Nicely-as-one-field-edit-as-multiple
Block1: 2 Label fields ({myaddress}, {mybtn}).
Block2: Address fields.
Create a javascript method (switchBlocks) with a variable (vswitch) to be passed in.
Code:
if(vswitch == 1)
{
document.getElementById('div_hidden_bloco_0').style.display = 'none'; //you need to determine the number of the block by inspecting the element in the browser
document.getElementById('div_hidden_bloco_1').style.display = 'block';
}
else
{
document.getElementById('div_hidden_bloco_0').style.display = 'block';
document.getElementById('div_hidden_bloco_1').style.display = 'none';
}
Code:
sc_ajax_javascript('switchBlocks',array(0)); //we need this because we can't call javascript from the onLoad event
Code:
{myaddress} = {name}.'<br>'.{address1}.'<br>'.{city}; {mybtn} = "<button type='button' onclick='switchBlocks(1)'>Edit</button>"; //could be beefed up with some css call_switchBlocks();
Code:
call_switchBlocks();
自行建立欄位:{sam_addr_btn}
在 onLoad Event裡建立
{same_addr_btn1}="<button type='button' onclick='sameaddress1()'>Same Address</button>";
在 Javascript Methods建立一個 sameaddress
code:
$("select[name$='m_country_id']" ).val($("select[name$='country_id']").val());
$("input[name$='m_state']" ).val($("input[name$='state']").val());
$("input[name$='m_city']" ).val($("input[name$='city']").val());
$("input[name$='m_postcode']" ).val($("input[name$='postcode']").val());
$("input[name$='m_street1']" ).val($("input[name$='street1']").val());
$("input[name$='m_street2']" ).val($("input[name$='street2']").val());
2015年4月8日 星期三
ScriptCase 裡 Select 對應資料欄位不可以使用 ZEROFILL
如題,
如果將欄位設為 ZEROFILL 在ScriptCase裡恐怕會是災難!因為,ScriptCase裡面好像不認得這種欄位設定!會搞得很慘!
我把 ZEROFILL屬性拿掉,就正常了!
呼!搞了半天!花費我好幾個小時的時間,以為撞鬼了!軟體不會撞鬼,只有自己不知道錯在哪裡而已,唉!
記下來,以後不要犯一樣的錯!
如果將欄位設為 ZEROFILL 在ScriptCase裡恐怕會是災難!因為,ScriptCase裡面好像不認得這種欄位設定!會搞得很慘!
我把 ZEROFILL屬性拿掉,就正常了!
呼!搞了半天!花費我好幾個小時的時間,以為撞鬼了!軟體不會撞鬼,只有自己不知道錯在哪裡而已,唉!
記下來,以後不要犯一樣的錯!
2015年4月5日 星期日
ScriptCase 的 Form 裡的 Checkbox 整列設定on/off
Form 有四種類型:
1. Single Record
2. Multiple Record
3. Editable Grid
4. Editable Grid View
這四種的 設定裡面,在 Setting 裡面,底下有個 Layout And Behavior
裡面,如果是第二個 Multiple Record 會有一個
這是用在,例如 ScriptCase 所附的 Security 模組中的 Groups/Apps 權限程式中,設定是否有權限,就有用到這個功能。
1. Single Record
2. Multiple Record
3. Editable Grid
4. Editable Grid View
這四種的 設定裡面,在 Setting 裡面,底下有個 Layout And Behavior
裡面,如果是第二個 Multiple Record 會有一個
Mark checkbox | Mark all the checkbox fields of the record. |
這是用在,例如 ScriptCase 所附的 Security 模組中的 Groups/Apps 權限程式中,設定是否有權限,就有用到這個功能。
如果要在這一個 row 的前面多出現一個 Checkbox 以選擇這個 row 裡面所有的 checkbox on/off 就必須把以上這個選項打開。
其他三個form 類型沒有這個選項。
這是在 Script Case 的 HELP 裡面沒有寫到的!
2015年4月4日 星期六
ScriptCase 的內建Macro : sc_field_disabled_record()
很多軟體都會有一些未公布、未公開的......
ScriptCase 也是一樣的,真的是有點令人......討厭。
我覺得 ScriptCase 還有很多改進的空間,或者是像我另一位朋友說的:「他完全不考慮使用這種程式產生器、或是現成模組、套版等」,開發程式產生器、或套組的工程師,我們搞不清楚他的裡面寫什麼,Open Source的還好,可以看到原始程式碼,還可以知道他做了甚麼事,沒有開放原始碼的,就完全不知道它內部的做法,好像黑盒子一樣。
程式軟體工程的模組,黑盒子概念,物件概念,當然是為了不用蓋房子都必須從磚塊一個一個砌,可以用別人做好的模組來使用就好,節省時間與成本,然而,有一好,就沒兩好,模組也就成了黑盒子,他裡面搞什麼,我們無法掌控!
ScriptCase的Macro有許多讓人......的地方,再怎樣多的 Macro 恐怕也很難滿足所有的需求。
sc_field_disabled(),是一個鎖住欄位,不讓人編輯的函數,但是,如果到了Grid的時候,就不適用逐個記錄的欄位鎖住否。必需用另一個函數sc_field_disabled_record(),而這個函數在 Help 裡面沒有!但在, ScriptCase所附的 Security 模組裡面就有用到!
令人感到困惑的是:到底還有多少沒有被列出公告出來的函數?
碰到問題時,去哪裡找?
ScriptCase 要加強這部分的說明文件,以及服務管道。
ScriptCase 好像是巴西人開發的,使用的原始文字我看不懂,還好有英文,但英文對他們來說是第二語言,所以,並不是第一手的資訊。
有沒有我們中文自己開發類似的程式產生器呢?
ScriptCase 也是一樣的,真的是有點令人......討厭。
我覺得 ScriptCase 還有很多改進的空間,或者是像我另一位朋友說的:「他完全不考慮使用這種程式產生器、或是現成模組、套版等」,開發程式產生器、或套組的工程師,我們搞不清楚他的裡面寫什麼,Open Source的還好,可以看到原始程式碼,還可以知道他做了甚麼事,沒有開放原始碼的,就完全不知道它內部的做法,好像黑盒子一樣。
程式軟體工程的模組,黑盒子概念,物件概念,當然是為了不用蓋房子都必須從磚塊一個一個砌,可以用別人做好的模組來使用就好,節省時間與成本,然而,有一好,就沒兩好,模組也就成了黑盒子,他裡面搞什麼,我們無法掌控!
ScriptCase的Macro有許多讓人......的地方,再怎樣多的 Macro 恐怕也很難滿足所有的需求。
sc_field_disabled(),是一個鎖住欄位,不讓人編輯的函數,但是,如果到了Grid的時候,就不適用逐個記錄的欄位鎖住否。必需用另一個函數sc_field_disabled_record(),而這個函數在 Help 裡面沒有!但在, ScriptCase所附的 Security 模組裡面就有用到!
令人感到困惑的是:到底還有多少沒有被列出公告出來的函數?
碰到問題時,去哪裡找?
ScriptCase 要加強這部分的說明文件,以及服務管道。
ScriptCase 好像是巴西人開發的,使用的原始文字我看不懂,還好有英文,但英文對他們來說是第二語言,所以,並不是第一手的資訊。
有沒有我們中文自己開發類似的程式產生器呢?
2015年4月3日 星期五
Script Case使用有感
Script Case 是一個 php 的 應用程式產生器,可以產生 php+mysql 或其他資料庫的應用程式。
他有設計好許多現成的功能,優勢是:可以快速的產生程式,然而,缺點是:僅能做出他所提供的功能。
所以,如果要以 Script Case來做為一個AP 的開發工具,記得:僅能做出它能做的,不能做出它做不到的。
最好,先研究他能做的,然後,去適應它能做的。
不要妄想去做他做不到的。那會浪費很多時間。
尤其是它有很多的 bugs ,我們只能去適應它!使用它的功能,不要妄想去改變它。
多想一想如何運用它擁有的功能,來達到程式的目的。畫面部分,就遷就他可以做的。
他有設計好許多現成的功能,優勢是:可以快速的產生程式,然而,缺點是:僅能做出他所提供的功能。
所以,如果要以 Script Case來做為一個AP 的開發工具,記得:僅能做出它能做的,不能做出它做不到的。
最好,先研究他能做的,然後,去適應它能做的。
不要妄想去做他做不到的。那會浪費很多時間。
尤其是它有很多的 bugs ,我們只能去適應它!使用它的功能,不要妄想去改變它。
多想一想如何運用它擁有的功能,來達到程式的目的。畫面部分,就遷就他可以做的。
訂閱:
文章 (Atom)
如何判斷現在FORM是在 insert mode? 還是 update mode?
只要用 if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。
-
讓 PHP 接收 post 的 json 資料 - 8月 02, 2013 我們在串接API的時候會用到 CURL 函式 POST 資料給 JSON 接收,雖然我們是使用 POST 傳出資料。但是我們在接收的 SERVER 端使用 $_POST 卻抓不到任何資料。 原來 ...
-
分享:網站上 http://shuai.be/archives/php-undefined-index/ 平時用 $_GET[ ‘ xx ’ ] 取得參數值時,如果之前不加判斷在未傳進參數時會出現這樣的警告 : PHP Notice: undefined i...
-
Note that it's ultimately the responsibility of the server admin to ensure his system is secure. These are some basic security tips tha...