「REF」在 CS版正常,轉換成網絡版過程中不報錯,但運行時會整句失效:
1. integer dwcontrol.GetChild (string name, REF DataWindowChild dwchildvariable )
2. f_to_uppser(ls_string, REF ls_result)
「REF」在 CS版正常,轉換成網絡版過程中不報錯,但運行時會整句失效:
1. integer dwcontrol.GetChild (string name, REF DataWindowChild dwchildvariable )
2. f_to_uppser(ls_string, REF ls_result)
PB 有 Debug 功能,它讓你可以看着系統一句一句的執行,也能看到每個變量的值,有助程序猿檢查問題,找到報錯的位置。
在Debug 前要先定位,在最接近報錯點的位置插入breakpoint:
然後點「Debug」進入 Debug mode,再點「Start」以啓動系統:
單雙行不同背景色能令數據看起來更清晰,如何做到呢?
建個如下的 function(), window 或 datawindow 的祖先中加入執行的代碼,最好還加個開關,需要時執行一下就可以了。至於 rgb 值,放到數據庫或 ini 就可以了。
// f_set_rowback_color(red1, green1, blue1, red2, green2, blue2, dw)
剛把一個 CS 系統署部成網上版,報了個陌生的錯,記錄一下。
以下寫法不管在 PB9, PB12,還是 PB2019,在 CS 環境下都能正常運行,但經 Appeon 部署成網上版就會報「列名 PIG 無效」:
select *
from t_user
繼承是 PB 其中一個賣點,繼承就是控件能從祖先繼承代碼,相同的代碼不必重複寫了又寫,圖中 w_public_code 往上就有三層,代碼會從第一層 pfc_w_master 開始,一層一層的往下執行,最後才會到 w_public_code 內你剛寫的,如果不想用祖先的代碼,只要右按,取消勾選「Extend AncestorScript」就可以了。如果只想要「部份」代碼就要把需要的拷貝到當前層去執行了。
另外要取得祖先的 return value 的話就要樣寫:
PowerBuilder
‘ABC~r~nDEF’:
ABC
DEF
這裏按字面理解就沒什麼差錯了,但有一點想提醒一下,「where clause」部份,如果你的系統是會多人同時使用的話,選「Key and Updatable Columns」或「Key and Modified Columns」會有點風險。因為 A B 兩個用戶同時打開同一條數據,先更新者勝,後更新者就會報 Row changed between retrieve and update 了。至於選哪一個比較好就要看系統對數據更新的嚴謹性了。
ini 就是設定檔,在前面 Powerbuilder(11) 中有提過一下,在手機版中, ini 變得有點不一樣。
部署後的 ini 轉化成手機上 config 文件夾中的 aws$ini$.xml,雖然變成了 xml,但 ProfileString() 跟 SetProfileString() 依然可用
每個 APP 都會有自己的路徑,所有在程式中下載的檔案都會儲存在該路徑的 plugin 文件夾中,你可以用 AppeonGetCacheDir() 取得它的路徑。
想在畫面中打開檔案的話,要先在畫面上加入個叫 uo_webview 的控件,然後把檔案這樣交給它就可以了:uo_webview.of_loadlocalfile(ls_path),但 Android 上不支援以 webview 打開 pdf,Android 上看 pdf 要交給瀏覽器:
ls_full_path = 'file://' + ls_full_path
GetContextService("Internet", iinet_base)