进销存管理系统2

if sqlca.sqlcode <> 0 then
        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
     (20)在数据窗cb_confirm的CLICKED事件加入如下代码,并调用存储过程.
        //调用存储过程
        declare sp_helptext procedure for sf_销售单;
        //执行存储过程
        execute sp_helptext;
        close(parent)
        因为改变了库存和应付款以后,不允许对销售单进行进一步的编辑,所以关闭窗口
     (21)在数据窗cb_exit的CLICKED事件加入如下代码
        integer msg
        msg=messagebox("提示信息","你确定现在要退出吗?",question!,yesno!,2)
        if msg =2 then return
        close(this)
     (22)在数据窗cb_print的CLICKED事件加入如下代码,调用打印窗口打印销售单,并询问用户是否确认销售单
         string ls_dwfullstate,ls_bh
        
         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                    关闭
   注意:打印主要用到函数"setfullstate","getfullstate"
        (1)在窗口w_print的open事件中加入如下代码
           string ls_dwfullstate
           ls_dwfullstate =message.stringparm
           dw_1.setfullstate(ls_dwfullstate)
//----------------------------------------------------------------------------------------------------------------------------------------   
   2.1.7 库存查询
    (1)创建一个窗口,保存名称为"w_kccx"
    (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()
    (6)窗口各个控件的属性如下表
//----------------------------------------------------------------------------------------------------------------------------------------   
     2.1.8 权限管理
   窗口各个控件的属性如下表
   控件类型                    对象名称             属性                    取值
   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"为选中的用户,
      代码如下:
          long li_handle,ll_row_found
          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
       在数据窗dw_1 的clicked事件中加入以下代码,选中的用户调用窗口函数“wf_setcheck”来设置树的checkbox属性为true or false
   
          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 系统编译并发布

维尔Excel仓储/仓库/进销存管理工具,是专门针对各类中小生产企业以及商业企业设计开发的专用工具。该工具结构简单、操作方便,解决困扰各类生产 /商业企业在产品入出库管理以及进销存管理中的难题,实现入出库作业的流水账管理,并自动统计库存。同时,提供日报月报统计、入出库履历查询等功能。之外,在针对库存管理上,能够实现先进先出和货位管理。该工具,完全可以代替几千、几万甚至几十万的专业进销存/仓储管理软件。 该工具采用Excel数据库引擎技术,按照软件工程思路设计开发,运行稳定,简单实用。不需要其他额外文件,不用做任何系统上的安装和设置。具有完整的仓库管理功能,如入出库管理功能、库存管理功能、货位管理功能。能实现按照生产日期先进先出,能够统计日报、周报、月报。广泛适用于中小物流企业的仓库管理、各类生产企业的库存管理、各类商业企业的进销存管理。试用版可以随意使用, 但不得作为商业用途转让或出售。 试用版包含以下内容: 1、入库管理,包含入库的物料代码、名称、数量、生产日期、入库日期、货位 a、在录入入库数量后,系统会自动更新库存模块的库存数量 b、支持修改功能,如果入库数量录错,可以修改,修改后会自动更新库存。 c、先进先出功能通过入库日期和货位共同来管理 d、拣货信息栏目用于显示该入库记录被何时出库 2、出库管理,包含出库的物料代码、名称、数量、出库日期等信息 a、录入出库数量后,系统会直接按照生产日期先进先出原则,查找适合货位上的商品 b、找到相应货位后,从该货位减去出库数,同时减库存表数量;如果数量不够,则再继续找其他货位。 c、标记拣货信息(从哪个货位、拣出多少数量) d、如果最终的库存数不够出货,则再出库表对应记录上显示缺货数 e、可以修改出库数量,但只能增加,不能减少 3、库存功能 a、通过库存表来设置商品基础信息:物料号、物料名称、单价、单位重量、单位体积等 b、入库或者出库操作的时候,会自动增加或减少库存,并自动计算库存金额、总重量、总体积等 4、报表功能 a、先设置好报表的日期范围,日期范围必须输入,且为正确日期范围 b、日期范围如果设置成一月的第一天和最后一天,则报表结果是月报,如果是一周的第一天,则是周报。 也可以设置成起始日期和结束日期为同一天,则是月报。 c、点击【统计】按钮,则自动统计出设定日期范围内各种商品的期初数、入库数、出库数、期末数等信息 5、查询功能 查询指定日期范围内,某种商品的入库、出库履历。 6、发行版本说明 a、标准版只支持在一台机器上注册;如果文件放到其他机器上,则需要重新注册。 b、公司版支持在多台机器上注册,并在所有注册过的机器上流转使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值