今天簡單總結下PB資料視窗(DW)顯示資料實作(不包含界面),如有不對地方,請大家多多指點,謝謝!
目标 : 實作如下圖檔的資料顯示功能,并且在點選“學生資訊清單(dw_userinfo_list)”某一行後要在“學生資訊(dw_userinfo_detail)”顯示該行記錄的詳細資訊。
準備====================================================走起!
1. 在db裡建立學生資訊表“userinfo_table”此處省略N多字。。。
2. 建立兩個資料視窗:“dw_userinfo_free”and "dw_userinfo_grid"
e.g. "dw_userinfo_grid"
(1) NEW --> Datawindow(grid) --> sql select --> 選擇相應表及字段 --> return --> 在select color and border settings界面直接next --> finish
(2) 在dw編輯頁面,對樣式進行設定,省略N多字。。。
3. 分别在“學生資訊清單”和“學生資訊”的Dataobject裡選擇"dw_userinfo_grid"和“dw_userinfo_free”
4. 在open方法裡添加如下代碼:
dw_userinfo_list.settransobject(sqlca) //連接配接資料庫
dw_userinfo_detail.settransobject(sqlca) //連接配接資料庫
dw_userinfo_list.retrieve('%','%') //顯示資料表裡面的資訊
5. 在 dw_userinfo_list的click方法添加如下代碼:
dw_userinfo_detail.reset()
string ls_id
if row>0 then
this.selectrow(0,false)
this.selectrow(row,true)
ls_id = this.object.userid[row]
dw_userinfo_detail.retrieve(ls_id)
end if
6. 在 dw_userinfo_detail的constructor方法裡添加如下代碼;
this.reset()
7. 下面需要在" dw_userinfo_detail"對應的"dw_userinfo_free"裡面設定參數及sql語句
(1) 在"dw_userinfo_free"頁面點選 design --> data sourse
(2) 設定一個參數 : design --> retrieve argument建立一個參數,類型選擇string
(3) 在where tag裡設定查詢條件;在sort tag裡設定排序。結果如下:
SELECT "ZHT_USERINFO_TABLE"."USERID",
"ZHT_USERINFO_TABLE"."USERNAME",
"ZHT_USERINFO_TABLE"."AGE",
"ZHT_USERINFO_TABLE"."SEX",
"ZHT_USERINFO_TABLE"."BIRTHDAY",
"ZHT_USERINFO_TABLE"."ADDR"
FROM "ZHT_USERINFO_TABLE"
WHERE "ZHT_USERINFO_TABLE"."USERID" = :s_id //userid是前台語句中傳參的參數,s_id是自己定義的變量,但是在語句中加冒号
ORDER BY "ZHT_USERINFO_TABLE"."USERID" ASC //生成排序的語句,ASC表示ascending升序
8. 儲存後運作