1. 程式人生 > >pb編輯視窗控制下拉框中的內容自動篩選並必須選擇正確和欄位型別正確

pb編輯視窗控制下拉框中的內容自動篩選並必須選擇正確和欄位型別正確

dw 的 editchanged事件:

ib_changed = true
cb_update.enabled = true

datawindowchild ldwc_dddw
datawindowchild ldwc_dddw1

CHOOSE CASE dwo.name
		
CASE 'company_name' 
		This.GetChild(dwo.Name,ldwc_dddw)
		if len(data)>1 then
			ldwc_dddw.setfilter("( Upper(company_no) like '%"+Upper(Data)+"%' ) OR ( Upper(py_code) like '%"+Upper(Data)+"%' )")
//			ldwc_dddw.setfilter("Upper(stock_no) like '%"+Upper(Data)+"%'")
			ldwc_dddw.filter( )
		else
			ldwc_dddw.setfilter('')
			ldwc_dddw.filter( )
		end if
	
CASE 'account'		
        		int i
		i = This.GetChild(dwo.Name,ldwc_dddw1)
		if i = -1 then return
		ldwc_dddw1.setTransObject(sqlca)
		ldwc_dddw1.retrieve()	
     	inv_dddwsrv.of_filter(ldwc_dddw1,"account_no",Upper(Data),false)
		  
CASE 'entrust_bank' 
 
 This.GetChild(dwo.Name,ldwc_dddw)
if len(data)>1 then
   ldwc_dddw.setfilter("( Upper(py_code) like '%"+Upper(Data)+"%' )")
   ldwc_dddw.filter( )
else
   ldwc_dddw.setfilter('')
   ldwc_dddw.filter( )
end if		  
		  
		  
	
END CHOOSE

dw的itemchanged事件:

ib_changed = true
cb_update.enabled = true

//IF dwo.name <>'contract_no' THEN return
IF row < 1 THEN return

int li_Count
dwitemstatus   ldws

STRING ls_bm,ls_bm1,ls_bm2,ls_bm3,ls_bm4
STRING ls_ry

CHOOSE CASE dwo.name
	CASE 'contract_no' 
		
     ldws = this.getitemstatus(row,0,primary!)
     IF ldws = new! OR ldws  = newmodified! THEN
	    SELECT count(*) into :li_Count from contract_info where  contract_no= :data;
         IF li_Count > 0 THEN
		 messagebox('警告','此合同已經存在.')
		 return 1
	    END IF
   END IF
	
 	 CASE 'company_name' 
    
	IF Len(Data) > 0 THEN	
	 int  count
	SELECT count(*)  INTO :count
	FROM custom_info
	WHERE  company_no=:data ;	
		
	if  count<=0 then 
	//	messagebox('提示','輸入的合同號不存在!')
		return 1
	end  if  	
    end  if  
	//THIS.AcceptText()
	//ls_ry = THIS.GetItemString(row,'product_no')
	SELECT company_short, company_address,capital,legal_person, company_name INTO :ls_bm, :ls_bm1, :ls_bm2, :ls_bm3, :ls_bm4
	FROM custom_info
	WHERE company_no= :data ;
	
	IF ls_bm <> '' AND IsNull(ls_bm) = FALSE THEN
		 THIS.SetItem(row,'company_short',ls_bm)
	END IF
	
	IF ls_bm1 <> '' AND IsNull(ls_bm1) = FALSE THEN
		 THIS.SetItem(row,'address',ls_bm1)
	END IF
	
	IF ls_bm2 <> '' AND IsNull(ls_bm2) = FALSE THEN
		 THIS.SetItem(row,'capital',ls_bm2)
	END IF
	
   IF ls_bm3 <> '' AND IsNull(ls_bm3) = FALSE THEN
		 THIS.SetItem(row,'legal_person',ls_bm3)
	END IF
	
     IF ls_bm4 <> '' AND IsNull(ls_bm4) = FALSE THEN
		 THIS.SetItem(row,'company_bz',ls_bm4)
	END IF
   
 CASE 'product_no' 

	THIS.AcceptText()
	//ls_ry = THIS.GetItemString(row,'product_no')
	SELECT product_name  INTO :ls_bm 
	FROM product_info
	WHERE product_no = :data ;
	
	IF ls_bm <> '' AND IsNull(ls_bm) = FALSE THEN
		 THIS.SetItem(row,'product_name',ls_bm)
	END IF

dw的itemerr事件:

CHOOSE CASE dwo.name
	CASE "tel"
	
			MessageBox("提示","請輸入數值型別資料!")
			this.setfocus()
			Return 1

		
	CASE "contract_no","isnotrenewal"
	
			MessageBox("提示","請輸入正確合同號!")
					
			Return 1

    	CASE "company_name"
	
			MessageBox("提示","請輸入正確公司代號!")
					
			Return 1		
			
//	  CASE "account"
//	
//			MessageBox("提示","請輸入正確帳號!")
//					
//			Return 1				
					

END CHOOSE

控制視窗欄位類型錄入正確

dw的itemerr事件:

string ls_column_name,ls_null
dec ldc_null
date ld_null
time lt_null

ls_column_name = dwo.name
SetNull(ls_null)
SetNull(ldc_null)
SetNull(ld_null)
SetNull(lt_null)

CHOOSE CASE Lower(dwo.ColType)
	CASE "date","datetime"
		IF Not IsDate(data) THEN
			MessageBox("提示","請輸入日期型別資料!")
			this.SetItem(row,ls_column_name,ld_null)
			Return 1
		END IF
	CASE "decimal","number","long"
		IF Not IsNumber(data) THEN
			MessageBox("提示","請輸入數值型別資料!")
			this.SetItem(row,ls_column_name,ldc_null)			
			Return 1
		END IF
	CASE "time"
		IF Not IsTime(data) THEN
			MessageBox("提示","請輸入時間型別資料!")
			this.SetItem(row,ls_column_name,lt_null)
			Return 1
		END IF
END CHOOSE