[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

[DataSet Bug]無法啟用條件約束。一或多個資料列的值違反非 Null、唯一或外部索引鍵條件約束

在使用TableAdapter作Query時發生 1. 原因為有些資料欄位Query出來後為null值 但是該欄位在dbDataSet的屬性AllowDBNull為False 因此把該欄位(或乾脆把全部欄位屬性AllowDBNull改為True 2. maxLength 檢...