程式相關的寫到有點題材枯竭了,換個話題,聊聊攝影。
- 10月 11 週一 202110:05
Ricoh GR 入塵
程式相關的寫到有點題材枯竭了,換個話題,聊聊攝影。
- 9月 28 週二 202114:15
PowerBuilder 編程 (45) - 如何調整顏色? (RGB)

整個表格都只有黑跟白,這不夠 user friendly,就好像交通燈有分紅黃綠一樣,系統可以把不同類型的數據顯示成不同顏色,哪個訂單未確認,哪個訂單已出貨,令用戶可以一目了然,省下人工分析的時間,提高工作效率。
設定顏色會用到 RGB(red, green, blue) ,裏面三個值都是從 0 到 255 ,最終顯示的顏色就是由這三個值調配而成的。
- 9月 03 週五 202111:22
Database (3) - Schedule Job

既然前面 dynamic sql 的文章有提到,這裏不如先聊一下Schedule Job。
顧名思義,會按 schedule 自動執行Job的,就是 Schedule job了,我主要是用在數據管理,例如清理日誌、停用久沒登入或密碼過時的用戶帳號、同步數據、結算、生成報表之類。
- 8月 30 週一 202115:18
PowerBuilder 編程 (44) - 如何翻轉文字?(Rotate)

Properties.Font.Escapement 內設就可以了,想翻 45 度就輸入 450,想翻 90 度就輸 900。
報表位置不足的時候就幫上忙了。
- 8月 27 週五 202109:54
雲端儲存
前幾年,家裏的NAS 壞了,數據只救回了部份。一朝被蛇咬,十年怕草繩,為免案件重演,我轉到雲端儲存。有說 Google Drive 會掃瞄檔案,並以此作為向用戶推送廣告的依據,所以當時選了「聲稱」能保護私隱,不掃用戶檔案的 Dropbox。
- 8月 27 週五 202109:30
Database(2) Run dynamic SQL in DB – sp_executesql()
懶惰確實是推動世界進步的最大動力,為了省下工作時間來上網,剛弄了個能清理各個日誌表的存儲過程。過程中學會了使用 mssql 的 sp_executesql()。
sp_executesql() 的用途就是在執行時執行剛拼湊成的 sql 語句。整套大概這麼寫:
-- 定義變量
declare @sqlCommand nvarchar(500)
declare @ParmDefinition nvarchar(500)
declare @dbname varchar(50)
declare @dbid_check integer
declare @column_check varchar(50)
sp_executesql() 的用途就是在執行時執行剛拼湊成的 sql 語句。整套大概這麼寫:
-- 定義變量
declare @sqlCommand nvarchar(500)
declare @ParmDefinition nvarchar(500)
declare @dbname varchar(50)
declare @dbid_check integer
declare @column_check varchar(50)
- 5月 13 週四 202108:00
PowerBuilder 編程 (43) - 如何以 DataShare() 提高速度?
DataShare() 的功用就是在 DataWinodw 間「共用」數據。在一些在程序各處都用到的數據,或數據量大的表中,比如用戶名稱、供應商名稱或貨物資料,DataShare 都能有效提高程序度。
做法是先把 dropdowndatawindow 定義到 global datastore,預先 retrieve()到系統緩存內,在有需要的時候,就以 DataShare() 把它的數據共用的當前畫面的下拉中,這樣就可以減省每次都重新 retrieve 的時間。除了下拉,各種查詢也可以使用這個方法,例如把貨物資料都存到緩存中,查詢時就把數據共用到查詢畫面,然後以 DW.Filter() 在 DataWindow 中查找資料。
做法是先把 dropdowndatawindow 定義到 global datastore,預先 retrieve()到系統緩存內,在有需要的時候,就以 DataShare() 把它的數據共用的當前畫面的下拉中,這樣就可以減省每次都重新 retrieve 的時間。除了下拉,各種查詢也可以使用這個方法,例如把貨物資料都存到緩存中,查詢時就把數據共用到查詢畫面,然後以 DW.Filter() 在 DataWindow 中查找資料。
- 4月 26 週一 202108:00
PowerBuilder 編程 (42) - 如何分派到打印機?
不同的 Datawindow 有時候需要按本身特性分配到不同的打印機,比方說把銷售報表印到 A4 雷射打印機、標籤分配到熱感標籤打印機、一套幾份的發貨單要印到 Dot Matrix 打印機,為方便使用及減少用戶選錯打印機的機會,我們可以把哪個DW打印到哪台打印機的設定寫到代碼中。
這裏介紹幾個相關的函數:
PrintGetPrinters() 取系統打印機清單( 注意有 s )
PrintGetPrinter() 取預設打印機
PrintSetPrinter() 設預設打印機
這裏介紹幾個相關的函數:
PrintGetPrinters() 取系統打印機清單( 注意有 s )
PrintGetPrinter() 取預設打印機
PrintSetPrinter() 設預設打印機
- 4月 22 週四 202108:00
PowerBuilder 編程 (41) – 為何PB升級後老連錯數據庫?

剛在做把程序由 PB9 升級 PB 12 的項目,出現了一個奇怪的現象,明明我寫好是連去數據庫 A 的,為何老在連去 B?由於兩個庫都有着幾個名稱相同的 table,導致程序一直正常運作,但數據卻總是寫在錯的數據庫?
- 4月 19 週一 202114:43
PowerBuilder 編程 (40) - Computed Field 與 Computed Column 有何不同?

在展示數據的時候,為方便理解,我們常常會把不同的數據拼在一起,比方說「姓名(學號)」,在一般的數據表設計中,姓名跟學號會是不同的兩個欄位,在數據窗口要要怎麼拼呢?
DataWindow 提供了兩種方法,一是 Computed Column,這是從數據源加,在SQL裏就寫好的;二是 Computed Field,這只要在畫面上加入就可以,而且更可以調用 function() 做更多的事情,但這種方式有個缺憾,就是速度慢。
