messagebox("提示信息","獲得銷售單明細編號失敗!")
return
end if
//得到最大銷售單明細編號
select max(convert(decimal(8,0),編號)) into :ll_xhbh from 銷售單明細;
if sqlca.sqlcode <> 0 then
messagebox("提示信息","獲得銷售單明細編號失敗!")
return
end if
//得到最大銷售明細編號
if ll_lsbh > ll_xhbh or isnull(ll_xhbh) then
ll_xhbh = ll_lsbh
end if
//循環賦值最大銷售單編號
for i =1 to dw_1.rowcount()
ls_lsbh =dw_1.getitemstring(i,"編號")
//銷售編號 +1
if isnull(ls_lsbh) or ls_lsbh =" " then
ls_xhbh +=1
if ls_xhbh = 0 or isnull(ll_xhbh) then
ls_xhbh ="1"
else
ls_xhbh =string(ll_xhbh)
end if
dw_1.setitem(i,"編號",ls_xhbh)
end if
dw_1.setitem(i,"銷售單號",ls_bh)
ld_she =dw_1.getitemdecimal(i,"稅額")
ld_sjhj =dw_1.getitemdecimal(i,"稅價合計")
ld_bhsj =dw_1.getitemdecimal(i,"不含稅價")
next
dw_bt.setitem(1,"稅額",dw_1.getitemdecimal(1,"she"))
dw_bt.setitem(1,"稅價合計",dw_1.getitemdecimal(1,"sjhj"))
dw_bt.setitem(1,"不含稅價",dw_1.getitemdecimal(1,"bhsj"))
//更新
if dw_bt.update() =1 and dw_1.update() =1 then
commit ; //提交數據
messagebox("提示信息","銷售單保存成功!")
else
rollback; //回滾
messagebox("提示信息","銷售單保存失敗,請重試!")
return
end if
//調用存儲過程
declare sp_helptext procedure for sf_銷售單;
//執行存儲過程
execute sp_helptext;
close(parent)
因爲改變了庫存和應付款以後,不允許對銷售單進行進一步的編輯,所以關閉窗口
msg=messagebox("提示信息","你確定現在要退出嗎?",question!,yesno!,2)
if msg =2 then return
close(this)
if dw_1.rowcount() < 1 then
msg=messagebox("提示信息","沒有可以打印的銷售單數據!")
return
end if
//得到銷售單號
ls_bh =dw_1.getitemstring(1,"銷售單號")
//檢索數據
dw_print.retrieve(ls_bh)
dw_print.getfullstate(ls_dwfullstate)
//打開打印窗口
openwithparm(w_print,ls_dwfullstate)
if messagebox("提示信息","是否記賬確認進貨單!",question!,yesno!,1) =1 then
cb_confirm.triggerevent(clicked!)
end if
(23)創建一個數據窗對象"d_xsd_print",其風格爲free form,data source爲sql select 選擇"銷售單明細"的所有字段
和銷售單的“編號”,客戶編號和銷售日期字段“商品清單”的品名,單位字段和“客戶清單”的名稱字段。
//----------------------------------------------------------------------------------------------------------------------------------------
2.1.6.3 創建打印窗口
window w_print window type response!
datawindow dw_1
statictext st_1 text 縮放比例
statictext st_2 text 打印份數
singlelineedit sle_1 text
editmask em_zoom text 100
vscrollbar vsb_zoom
editmask 1
vscrollbar vsb_pages
checkbox cbx_preview text 打印預覽
commandbutton cb_2 test 設置
commandbutton cb_1 test 打印
commandbutton cb_close test 關閉
ls_dwfullstate =message.stringparm
dw_1.setfullstate(ls_dwfullstate)
(2)設置窗口的屬性爲main!
(3)窗口各個控件的屬性如下表
窗口各個控件的屬性如下表
window w_kccx window type main!
datawindow dw_1 dataobject d_kzcx
datawindow dw_2 dataobject d_ck
statictext st_hh text 貨號
statictext st_pym text 拼音編碼
statictext st_ck text 倉庫
singlelineedit sle_hh
singlelineedit sle_pym
commandbutton cb_1 test 查詢
(4)創建一個數據窗對象"d_kccx",其風格爲free form,data source爲sql select 選擇"庫存庫"的所有字段
“商品清單”的品名,拼音碼,單位字段
(5)在數據窗cb_1的CLICKED事件加入如下代碼
string ls_hh,ls_pym,ls_ck
string ls_select
//得到輸入的值
ls_hh=trim(sle_hh.text)
ls_pym=trim(sle_pym.text)
ls_ck=is_ck
//貨號
if isnull(ls_hh) then
ls_hh ="%"
end if
//拼音碼
if isnull(ls_pym) then
ls_pym="%"
end if
//倉庫
if ls_ck =" " or isnull(ls_ck) then
ls_ck ="%"
end if
ls_hh ="%" +ls_hh+ "%"
ls_pym ="%" +ls_pym+ "%"
ls_ck ="%" +ls_ck+ "%"
//生成SQL語句
ls_select =" and 庫存庫.貨號 LIKE '"+ ls_hh + "'"
ls_select =ls_select + " and 商品清單.拼音編碼 LIKE '"+ ls_pym + "'"
ls_select =ls_select + " and 庫存庫.倉庫 LIKE '"+ ls_ck + "'"
//生成數據窗SQL語句
ls_select =is_sql +ls_select
//賦值SQL語句
dw_1.setsqlselect(ls_select)
dw_1.retrieve()
window w_qx_gl window type main!
datawindow dw_1 dataobject d_qx_user
datawindow dw_2 dataobject d_qx_qx
datawindow dw_2 visible false
treeview tv_1 checkboxes true
注意:1> 在窗口打開的時候,數據窗dw_1檢索出使用該系統的所有用戶,數據窗dw_2即權限數據窗檢索出該系統所擁有的所有權限,
並將權限都添加到樹上,由於所有的權限以樹的形式顯示出來,所以將數據窗dw_2的visible屬性設置爲false
2> 然後建立一個數據存儲"ids_qxyh",該數據存儲保存的現有的各個用戶所擁有的權限。,當在數據窗dw_1選擇一個用戶的時候
系統就根據選中的用戶從過濾數據存儲“ids_qxyh”中選中用戶的權限,並且將樹上給用戶所擁有的權限的"checkbox"屬性設置爲true
3> 當對用戶的權限進行增加和刪除時,直接用SQL語句對數據進行修改,並實時的檢索"ids_qxyh",這樣當下次單擊改變了權限的用戶時
數據爲最新修改的數據。
在窗OPEN事件代碼如下(並建立數據存儲"ids_qxyh"):
treeviewitem ltvi_item
long ll_tv,i,ll_rowcount
string ls_privilege
//連接數據庫
dw_1.settranobject(sqlca)
dw_2.settranobject(sqlca)
//檢索數據
dw_1.retrieve()
dw_2.retrieve()
//建立數據存儲,並檢索數據
ids_qxyh=create datastore
ids_qxyh.dataobject ="d_qx_yh"
ids_qxyh.settranobject(sqlca)
ids_qxyh.retrieve()
//生成菜單變量
im_privilege = create m_main
//賦值權限樹根
ltvi_item.label = "所有權限"
ltvi_item.data = "all"
ltvi_item.pictureindex = 1
ltvi_item.selectedpictureindex = 1
ll_tv = tv_1.insertitemlast(0,ltvi_item)
ll_rowcount=dw_2.rowcount()
if ll_rowcount < 1 then return
/循環,給樹賦值所有的權限名稱
for i =1 to ll_rowcount
ls_privilege = dw_2.getitemstring(i,"權限名稱")
ltvi_item.label = ls_privilege
ltvi_item.data = ls_privilege
ltvi_item.pictureindex = 2
ltvi_item.selectedpictureindex = 2
tv_1.insertitemlast(ll_tv,ltvi_item)
next
//tv_1.expanditem(2)
tv_1.expandall(1)
建立窗口函數“wf_setcheck”,返回值爲integer,參數"al_handle"爲樹的句柄,"as_user"爲選中的用戶,
代碼如下:
treeviewitem ltvi_item
string ls_menu,ls_user
ls_user = as_user
li_handle=al_handle
//得到參數
if li_handle = 1 then
//得到子項目
li_handle = tv_1.finditem(childtreeitem!,1)
else
//否則,得到同級的下一個項目
li_handle = tv_1.finditem(nexttreeitem!,li_handle)
end if
do while li_handle <> -1
tv_1.getitem(li_handle,ltvi_item)
//得到菜單項
ls_menu=ltvi_item.data
ll_row_found =ids_qxyh.find("權限名稱 ='" +ls_menu +"' and 用戶編號='" +ls_user +"'",1,ids_qxyh.rowcount())
if ll_row_found>0 then
ltvi_item.statepictureindex = 2
else
ltvi_item.statepictureindex = 1
tv_1.setitem(li_handle ,ltvi_item)
//遞規調用
wf_setcheck(li_handle,ls_user)
//find next at this level
li_handle = tv_1.finditem(nexttreeitem!,li_handle)
loop
retrun 1
treeviewitem ltvi_item
long li_handle,ll_row_found
string ls_user,ls_menu,ls_bm
if row < 1 then return
//選擇單擊的行
this.selectrow(0,false)
this.selectrow(row,true)
//得到用戶編號和部門
ls_user=this.getitemstring(row,"用戶編號")
ls_bm=this.getitemstring(row,"部門")
is_user= ls_user
is_bm = ls_bm
//調用函數顯示權限
wf_setcheck(1,ls_user)
ltvi_item.statepictureindex = 2
在樹tv_1的CLICKED事件中加入以下代碼:
treeviewitem ltvi_item
string ls_data
//得到數據
this.getitem(handle,ltvi_item)
ls_data = ltvi_item.data
if handle > 1 then
if ltvi_item.statepictureindex = 1 then
//插入權限表
insert into 權限清單
(用戶編號,
部門,
權限名稱 )
values (:is_user,
:is_bm,
:ls_data);
if sqlca.sqlcode <> 0 then
messagebox("提示信息","增加權限失敗!")
return
else
commit;
ids_qxyh.retrieve()
end if
else
//刪除權限
delete from 權限清單
where 用戶編號 =:is_user and 部門 =:is_bm and 權限名稱=:ls_data;
if sqlca.sqlcode <> 0 then
messagebox("提示信息","刪除權限失敗!")
rollback;//回滾數據;
return
else
commit; //提交數據
ids_qxyh.retrieve()
end if
end if
end if
2.1.8 系統編譯併發布