1. change frist language restore to install PowerBulider stuse
[PB6.5] cursor範例
declare curd_temp cursor for
select a.out_no, b.part_no, isnull(b.out_qty,0), isnull(b.out_qty,0) - isnull(b.turn_qty,0), b.seq_no
from lsf130 a, lsf130s b
where 1 = 1
and a.proj_no = :fs_proj
and a.cust_no = :fs_cust
// and a.out_date <= :fs_date
and a.out_no = b.out_no
and isnull(rev_qty,0) > 0
and isnull(confirm_emp,'') <> ''
and isnull(cancel_date,'') = ''
order by b.part_no, a.out_no;
open curd_temp;
fetch curd_temp into :ls_out, :ls_part, :ld_out, :ld_turn, :ls_seq_old ;
do while sqlca.sqlcode = 0
ll_count = ll_count + 1
ls_seq_no = string( long(ls_seq_no) + 1 ,'000')
tab_1.tabpage_1.dw_3.insertrow(0)
// wf_get_seq_2()// tab_1.tabpage_1.tab_2.tabpage_d2.dw_d2.setitem(ll_count, "auto_no", ls_auto_no)
tab_1.tabpage_1.dw_3.setitem(ll_count, "seq_no", ls_seq_no)
tab_1.tabpage_1.dw_3.setitem(ll_count, "turn_qty", ld_turn)
tab_1.tabpage_1.dw_3.setitem(ll_count, "out_no", ls_out)
tab_1.tabpage_1.dw_3.setitem(ll_count, "part_no", ls_part)
tab_1.tabpage_1.dw_3.setitem(ll_count, "raw_qty", ld_out )
tab_1.tabpage_1.dw_3.setitem(ll_count, "ls_pick", 'Y')
tab_1.tabpage_1.dw_3.setitem(ll_count, "seq_old", ls_seq_old)
fetch curd_temp into :ls_out, :ls_part, :ld_out, :ld_turn, :ls_seq_old ;
loop
close curd_temp;
[PB6.5]時間字串+亂數
int i
i = rand(1000) //產生亂數
string ls_What_Time , i2
ls_What_Time = String(now(), "hhmmss") //產生時間的字串
i2=ls_What_Time+string(i)
[PB]暫存 Code 參考
window_function 取得row資訊後做迴圈運算
long ll_count
string ls_seq_no, ls_out, ls_part, ls_partnum, ls_card, ls_postal, ls_addr1, ls_addr2, ls_addr3
decimal ld_out, ld_turn
tab_1.tabpage_1.dw_4.Reset()//重新產生dw4之前先清除
long ll_dw3_count,ll_dw3_rowcount,ll_dw3_row
string ls_dw3_out,ls_dw3_part,ls_dw3_pick
ll_dw3_rowcount = tab_1.tabpage_1.dw_3.rowcount()
ls_seq_no = '000'
ll_count = 0
declare curd_lsf200 cursor for
select a.part_no, a.part_num, a.card_no, a.out_no, a.postal, a.addr1, a.addr2, a.addr3
from lsf200 a
where 1 = 1
and a.proj_no = :fs_proj
and isnull(a.lsp170_yn,'N') <> 'Y'
order by a.part_no, a.out_no, a.card_no;
open curd_lsf200;
fetch curd_lsf200 into :ls_part, :ls_partnum, :ls_card, :ls_out, :ls_postal, :ls_addr1, :ls_addr2, :ls_addr3 ;
do while sqlca.sqlcode = 0
ll_dw3_count = 1
do while ll_dw3_count <= ll_dw3_rowcount
ll_dw3_row = tab_1.tabpage_1.dw_3.GetRowFromRowId(ll_dw3_count)
ls_dw3_out = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"out_no")
ls_dw3_part = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"part_no")
ls_dw3_pick = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"ls_pick")
if ls_dw3_pick = 'Y' and ls_dw3_out = ls_out and ls_dw3_part = ls_part then
ll_count = ll_count + 1
ls_seq_no = string( long(ls_seq_no) + 1 ,'000')
tab_1.tabpage_1.dw_4.insertrow(0)
tab_1.tabpage_1.dw_4.setitem(ll_count, "seq_no", ls_seq_no)
tab_1.tabpage_1.dw_4.setitem(ll_count, "part_no", ls_part)
tab_1.tabpage_1.dw_4.setitem(ll_count, "part_num", ls_partnum)
tab_1.tabpage_1.dw_4.setitem(ll_count, "card_no", ls_card)
tab_1.tabpage_1.dw_4.setitem(ll_count, "out_no", ls_out)
tab_1.tabpage_1.dw_4.setitem(ll_count, "postal", ls_postal)
tab_1.tabpage_1.dw_4.setitem(ll_count, "addr1", ls_addr1)
tab_1.tabpage_1.dw_4.setitem(ll_count, "addr2", ls_addr2)
tab_1.tabpage_1.dw_4.setitem(ll_count, "addr3", ls_addr3)
tab_1.tabpage_1.dw_4.setitem(ll_count, "ls_pick", 'Y')
end if
ll_dw3_count = ll_dw3_count+1
loop
fetch curd_lsf200 into :ls_part, :ls_partnum, :ls_card, :ls_out, :ls_postal, :ls_addr1, :ls_addr2, :ls_addr3 ;
loop
close curd_lsf200;
return
buttenchecked
//IFITB00F-HD000000000860 新增條件:分公司別和部門別//業務員
//分公司
if dwo.name = "pb_comp" then
lstr.pc_cnt = 2
openwithparm( w_pick_company, lstr, gw_win )
lstr = Message.PowerObjectParm
if lstr.pc_cnt > 0 then
ls_code1 = lstr.ps_code1[1]
tab_1.tabpage_1.dw_1.setitem( row, "comp_no", ls_code1)
tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a", lstr.ps_code2[1] )
tab_1.tabpage_1.dw_1.setcolumn("comp_no")
else
tab_1.tabpage_1.dw_1.setfocus()
tab_1.tabpage_1.dw_1.setcolumn("comp_no")
end if
tab_1.tabpage_1.dw_1.setfocus()
tab_1.tabpage_1.dw_1.setcolumn("comp_no")
goto buttonclicked_exit
end if
//部門別
if dwo.name = "pb_dept" then
lstr.pc_cnt = 2
openwithparm( w_pick_dept, lstr, gw_win )
lstr = Message.PowerObjectParm
// 有挑選資料
if lstr.pc_cnt > 0 then
ls_code1 = lstr.ps_code1[1]
tab_1.tabpage_1.dw_1.setitem(row, "dept_no", ls_code1)
tab_1.tabpage_1.dw_1.setitem(row, "dept_name", lstr.ps_code2[1])
tab_1.tabpage_1.dw_1.setcolumn("dept_no")
else
tab_1.tabpage_1.dw_1.setfocus()
tab_1.tabpage_1.dw_1.setcolumn("dept_no")
end if
tab_1.tabpage_1.dw_1.setfocus()
tab_1.tabpage_1.dw_1.setcolumn("dept_no")
goto buttonclicked_exit
end if
//業務員
IF dwo.name = "pb_emp" THEN
lstr.pc_cnt = 1
lstr.ps_where="isnull(baf004.emp_yn,'N') = 'Y' and isnull(baf004.leave_date,'') = ''"
openwithparm( w_pick_emp, lstr, gw_win )
lstr = Message.PowerObjectParm
IF lstr.pc_cnt > 0 THEN
is_change = "Y"
tab_1.tabpage_1.dw_1.setitem( row, "emp_id" , lstr.ps_code1[1])
tab_1.tabpage_1.dw_1.setitem( row, "emp_cname" , lstr.ps_code2[1])
// tab_1.tabpage_1.dw_1.setitem( row, "comp_no" , lstr.ps_code3[1])
// tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a", lstr.ps_code4[1])
//
// tab_1.tabpage_1.dw_1.setitem( row, "dept_no" , lstr.ps_code5[1])
// tab_1.tabpage_1.dw_1.setitem( row, "dept_name", lstr.ps_code6[1])
//debug
//err_msg(63,2,'@1'+lstr.ps_code1[1]+'AAA'+lstr.ps_code2[1]+'AAA'+lstr.ps_code3[1]+'AAA'+lstr.ps_code4[1]+'AAA'+lstr.ps_code5[1]+'AAA'+lstr.ps_code6[1]+'AAA'+lstr.ps_code7[1]+'AAA'+'@')
//is_err = 'Y'
ELSE
tab_1.tabpage_1.dw_1.setfocus()
tab_1.tabpage_1.dw_1.setcolumn("emp_no")
goto buttonclicked_exit
END if
//tab_1.tabpage_1.dw_1.setcolumn("eng_emp")
//tab_1.tabpage_1.dw_1.setfocus()
goto buttonclicked_exit
END if
itemchange
//IFITB00F-HD000000000860 新增條件:分公司別和部門別//業務員
//分公司
case "comp_no"
//ls_compno ,ls_compnm
ls_compno = tab_1.tabpage_1.dw_1.getitemstring(row,"comp_no")
select comp_name_a into :ls_compnm from pu_company where comp_no = :ls_compno
using sqlca;
if ls_compnm <> ''
tab_1.tabpage_1.dw_1.setitem( row, "comp_name_a", ls_compnm )
tab_1.tabpage_1.dw_1.setcolumn("comp_no")
else
err_msg(2,2,"@@1" + "此~公~司~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")
tab_1.tabpage_1.dw_1.setitem( row, "comp_no", "" )
goto itemchanged_exit
end if
//部門別 ls_deptno, ls_deptnm
case "dept_no"
ls_deptno = tab_1.tabpage_1.dw_1.getitemstring(row,"dept_no")
select dept_name into :ls_deptnm from baf002 where dept_no = :ls_deptno ;
//select comp_name_a into :ls_compnm from pu_company where comp_no = :ls_compno
using sqlca;
if ls_compnm <> ''
tab_1.tabpage_1.dw_1.setitem( row, "dept_name", ls_deptnm )
else
err_msg(2,2,"@@1" + "此~部~門~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")
tab_1.tabpage_1.dw_1.setitem( row, "dept_no", "" )
goto itemchanged_exit
end if
//業務員
// ls_empid, ls_empnm
case "emp_id"
ls_empid = tab_1.tabpage_1.dw_1.getitemstring(row,"emp_id")
select emp_cname into :ls_empnm from baf004
where emp_id = :ls_empid
and isnull(baf004.emp_yn,'N') = 'Y'
and isnull(baf004.leave_date,'') ='';
using sqlca;
if ls_compnm <> ''
tab_1.tabpage_1.dw_1.setitem( row, "emp_cname", ls_empnm )
else
err_msg(2,2,"@@1" + "此~員~工~代~號~不~存~在~﹐請~重~新~輸~入~﹗ " + "@")
tab_1.tabpage_1.dw_1.setitem( row, "dept_no", "" )
goto itemchanged_exit
end if
[SQL][SSIS]List for SQL Server SSIS project and packages name
SELECT
b.[name] as [專案名稱]
,a.[name] as [dtsx名稱]
FROM SSISDB.catalog.packages as a
left join SSISDB.catalog.projects as b on a.project_id = b.project_id
order by b.[name] asc ,a.[name] asc
[PB]練習語法(不斷更新)
20221013 li_control = 1 非常重要,可直接選點選該行
//當kind = 1 (LC)必須在phf170s有資料 =0筆 清空欄位並錯誤訊息
//當kind = 2 (TT)必須在phf170s沒有資料 < 1筆 否則清空欄位並錯誤訊息
long ll_row2
string ls_order_no2 , ls_seq_no2
int ll_cnt
ll_row2 = tab_1.tabpage_1.dw_1s.getrow()
ls_order_no2 = tab_1.tabpage_1.dw_1s.getitemstring(ll_row2,"order_no")
select count(*) into :ll_cnt
from phf170s
where phf170s.order_no = :ls_order_no2
using sqlca;
if ls_kind = '1' and ll_cnt=0 then
err_msg(2,2,"@@1"+"此~訂~購~單~不~為~類~別~LC"+"@")
li_control = 1
tab_1.tabpage_1.dw_1s.setcolumn("order_no")
tab_1.tabpage_1.dw_1s.setitem(row, "order_no", '')
goto itemchanged_exit
elseif ls_kind = '2' and ll_cnt>0 then
err_msg(2,2,"@@1"+"此~訂~購~單~不~為~類~別~TT"+"@")
li_control = 1
tab_1.tabpage_1.dw_1s.setcolumn("order_no")
tab_1.tabpage_1.dw_1s.setitem(row, "order_no", '')
goto itemchanged_exit
end if
20220905 要另外解開不然所有按鈕不能按
20220901 選取全部column迴圈設定(會排除按鈕butten)
ll_col = long(tab_1.tabpage_1.dw_1.describe("datawindow.column.count"))
for ll_i = 1 to ll_col
tab_1.tabpage_1.dw_1.SetTabOrder(ll_i, 0)
next
20220830 在pb中insert
insert into trf100_mail_20220830 ( send_no, keyin_emp, crt_time, crt_user )
values ( :ls_send_no, :ls_keyin_emp, getdate(), :ls_loginuid)
commit using sqlca; //不用等到全部程式完成,直接insert
20220111
取得dw row while loop 讀出(計算或寫入DB)
long ll_dw3_count,ll_dw3_rowcount,ll_dw3_row
ll_dw3_rowcount = tab_1.tabpage_1.dw_3.rowcount()
ll_dw3_count = 1
do while ll_dw3_count <= ll_dw3_rowcount
ll_dw3_row = tab_1.tabpage_1.dw_3.GetRowFromRowId(ll_dw3_count)
ls_dw3_out = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"out_no")
ls_dw3_part = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"part_no")
ls_dw3_pick = tab_1.tabpage_1.dw_3.getitemstring(ll_dw3_row,"ls_pick")
ll_dw3_count = ll_dw3_count+1
loop
20220111
產生亂數 Rand ( n ) EX:1~32767
20211228 提示訊息選是或否才執行
//確認刪掉的有符合資產檔累計折舊=0才有以刪除
li_rtn = wf_check_del(ls_proj,ls_auto_nos,ls_auto_noe,ls_auto_dates,ls_auto_datee)
if li_rtn > 0 then //回傳0以上表示累計折舊大於零的筆數
err_msg(2,2,"@@1"+"累計折舊大於零無法刪除!"+"@")
//tab_1.tabpage_1.dw_1.setcolumn("out_date")
goto buttonclicked_exit
else
ls_rtn2 = wf_del_count(ls_proj,ls_auto_nos,ls_auto_noe,ls_auto_dates,ls_auto_datee)
if MessageBox('提示信息','確定刪除所選資料共'+ls_rtn2+'筆',Question! ,YesNo! , 1 ) = 1 then
wf_del(ls_proj,ls_auto_nos,ls_auto_noe,ls_auto_dates,ls_auto_datee)
MessageBox('提示信息', '資料已刪除共'+ls_rtn2+'筆')
else
MessageBox('提示信息','放棄刪除')
end if
end if
20211201
//messagebox轉型數字=>文字
messagebox("percent", string(value)+"%")
20211117
find_text 請注意 powerbuilder6.5 不支援中文查找
20211116
tab_1.tabpage_1.dw_1.settaborder("cust_no", 0)
//將taborder設定為0 => 不能點選object , 設為大於0可以點選
tab_1.tabpage_1.dw_1.modify( " cust_no.background.color = '" + gs_ucolor + "'" )
//改變背景顏色
[DataSet Bug]無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束
在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...
-
當出現此訊息,標準說明網路很多" 物件尚未實體化就呼叫它的屬性或方法 " , 以下為自己遇到的以及處理方式,作為紀錄 表示有設定的物件,可能是DataTable、Int、String、陣列、object等等,未設定值(沒有值),就直接使用 1.一般的 EX ...
-
在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...
-
色 碼 表 十六進位值排列 <font color="#RRGGBB"> #FFFFFF #DDDDDD #AAAAAA #888888 #666666 #444444 #000000 #FFB7DD #FF88C2 #FF4...


