2009年3月4日 星期三

下拉開窗多選的家庭作業:以客戶編號及簡稱挑選

string ls_sql


integer li_ret


 


choose case dwo.name //選擇某一個object的名字


      case "cb_cusno" //問號的name


             ls_sql = "select cdrhad.cusno,cdrcus.cusna from cdrhad,cdrcus where cdrhad.cusno=cdrcus.cusno order by cusno" //order by意指排序


             // li_ret = wi_nvo_itnbrselect.uf_popselect(ls_sql,"品號","品名","invmas.itnbr",1)


wi_nvo_itnbrselect.uf_popselect(ls_sql,"客戶編號","客戶名稱","cdrhad.cusno",1) //開窗:取用uf_popselect功能,多選時記invmas.itnbr(品號),最後一個1是代表傳SQL值到pop window


         //if li_ret = 0 then


                 if wi_nvo_itnbrselect.uf_isselected() then //uf_isselected是同一個obj裡判斷有否選擇的功能


                    this.object.cb_cusno.text = "..."


                    this.setitem(row,"cusno","您已選妥了^_^")


                    this.setitem(row,"cusna","您已選妥了^_^")


                 else


                    this.object.cb_cusno.text = "?"


                 end if


              //end if


end choose


 


return 0


 


----------------


變化題:


從採購單裡找出廠商簡稱,


採購單頭:purhad


廠商主檔:purvdr


廠商編號:vdrno


廠商簡稱:vdrna


 


select cdrhad訂單單頭.cusno客戶編號,cdrcus客戶主檔.cusna客戶簡稱 from cdrhad訂單單頭,cdrcus客戶主檔 where cdrhad訂單單頭.cusno客戶編號=cdrcus客戶主檔.cusno客戶編號 order by cusno客戶編號


 


select purhad.vdrno,purvdr.vdrna from purhad,purvdr where purhad.vdrno=purvdr.vdrno order by vdrno;


Tool bar execute




筆記:
1.Join SQL要注意Where值是不是Key,特別是上萬筆的資料,如品號、BOM及交易資料,大量資料可以用declare語法

 


下拉開窗多選教學:以品號品名多選(針對沒寫過程式,或只會說得一口好程式如Andy的人)

  dw_query buttonclicked event


string ls_sql


integer li_ret


 


choose case dwo.name //選擇某一個object的名字


      case “cb_itnbr“ //問號的name


             ls_sql = “select itnbr,itdsc from invmas order by itnbr“ //order by意指排序


             // li_ret = wi_nvo_itnbrselect.uf_popselect(ls_sql,"品號","品名","invmas.itnbr",1)


wi_nvo_itnbrselect.uf_popselect(ls_sql,“品號”,“品名”,“invmas.itnbr”,1) //開窗:取用uf_popselect功能,多選時記invmas.itnbr(品號),最後一個1是代表傳SQL值到pop window


         //if li_ret = 0 then


                 if wi_nvo_itnbrselect.uf_isselected() then //uf_isselected是同一個obj裡判斷有否選擇的功能


                    this.object.cb_itnbr.text = "..."


                    this.setitem(row,"itnbr","")


                    this.setitem(row,"itdsc","")


                 else


                    this.object.cb_itnbr.text = "?"


                 end if


              //end if


end choose


 


return 0


筆記:


1.     windowsevent listsheet


2.     Window都預設好先執行openopen是指程式一開始時要執行的動作,如果程式在一開始執行就要先行判斷的(datawindow 先執行constructer)


3.     全粉紅是繼承來的,半粉紅是自行改過的


4.     Paf addpaf七個之外的項目,是後來加的,所有的手冊都沒提到,但是它是必須的


5.     要怎麼看到Data WindowSource Code:在選項的datawindow上按右鍵/scrip/選bottonclicked/看到source code


6.     宣告變數:要注意按其原則進行,宣告變數前要注意,若是取用值時要宣告成和取用值相同的型態


1.     _sql:寫sql的指令


2.     _set:判斷函數回傳值


7.     Choose是一種判斷式,擇一之意


1.     Choose case


2.     Case


3.     ….


4.     End


8.     什麼時Data winodws OBJ: Datawindow裡的各欄位都是一個datawindow objet


9.     要知道datawindow?objet叫什麼名字:選datawindow/右鍵modify datawindow/按問號/看右邊


10. 若要開複選窗:按datawindow/選declare instance variables/宣告一個物件(pafadd)   哪一個物件名稱


1.     宣告的名字 Wi_nvo_itnbrselect名命原則:wi: windowinstens變數, nvo: non vision obj, itnbrselect: 是一個品號的選擇


11. declare instance variables的宣告: 一直到程式關掉以前都有效


12. 如何知道這程式的declare instance variables是否已在原繼承前就已定義:看同word sheet的右上的下拉選項去看


13. 沒有宣告到的obj(很多function的集合)要使用,要先宣告


14. If XXX then: 如果是有的就XXX, else: 如果沒有就XXX


15. 在某一個datawindowthis就代表這一個datawindow


16. Setitem: 把值寫入第幾行(row)某欄位傳什麼值


17. Return 0: 若成功就為0


18. PPT貼到PB時,要注意上雙引號會變全形,要改成半形


19. Table . Column 資料表.欄位


20. 掛程式:MIS130


21. 程式寫好先Regenerate: tool bar library/把程式拖到最右邊視窗/tool bar select all (or ctrl A)/ tool bar Regenerate


22. 檢查程式:tool bar compile


23. 執行sourcetool bar run runner