转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
PB中关于动态工资项目问题的解决办法         

PB中关于动态工资项目问题的解决办法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:787 更新时间:2009/4/24 21:45:06

  我在做人事管理软件时发现一个问题就是,工资管理中工资的发放项目经常会发生变化,而且工资项目之间的计算关系也经常发生变化,这为实际的编程带来了很大的麻烦。其实实际工作中还有很多类似的情况需要解决,希望能为大家提供多一种思路以供参考。

  现将我的解决方法陈述如下。

  第一步,创建一个工资表tbl_gztz,用来记录职工的每个月的工资发放情况,其中就包括工资的发放项目。所以这个表字段应该尽量地多,你大可放在50个以上。

  表结构如下:tbl_gztz

数据列名 数据列类型 数据列含义 Zgbh Varchar2(10) 职工编号 Mc Varchar2(10) 职工名称 Yf Varchar2(6) 工资月份 Gz1 Number(12,2) (含义见项目表下表) Gz2 Number(12,2) (含义见项目表下表) Gz3 Number(12,2) (含义见项目表下表) Gz4 Number(12,2) (含义见项目表下表) Gz5 Number(12,2) (含义见项目表下表)

  第二步,创建一个工资项目登记表tbl_gzxmdy,用来记录工资管理实际工作中的所有的工资项目和项目之间的计算关系。其中计算关系可以是简单的四则运算,也可以包含一些函数(限于PB内容函数)。

  表结构如下:

数据列名 数据列类型 数据列含义 Xm Varchar2(10) 工资项目名称 Xmmc Varchar2(20) 工资项目的含义 Jsgs Varchar2(40) 对应的计算关系 Flag Varchar2(1) 是否启用该项(1为启用,0为停用)

  工资的发放项目从工资发放表Tbl_gztz中取出字段,这个在Oracle(或其它数据)中很容易取出,然后将取出的字段插入到工资项目定义表Tbl_gzxmdy中,并为每个项目定义其含义,没有为其定义的,到时候将不显示出来。

  为了方便解释,举例说明比较清楚。取出发放项目字段的SQL语句如下:

Select Cname From Col Where Tname = 'TBL_GZTZ' and Coltype = 'NUMERIC' Order By Colno;

  工资项目数据维护举例说明:

Xm Xmmc Jsgs Gz1 技能工资   Gz2 浮动工资   Gz3 保险工资   Gz4 应发工资 Gz1 + Gz2 Gz5 房租费   Gz6 实发工资 Gz4 - Gz5

  第三步,现在基础工作已经作好,接下来就是程序实现了。

  首先,定义一个GRID风格的数据窗口,数据源选择Tbl_gztz表。并将它放到窗口中,进行一些数据库联接。在窗口的OPEN事件中,先将设置好的工资发放项目进行初始化设置,设置台头,设置可见项。具体代码如下:

dw_1.settransobject(sqlca)
string ls_xm,ls_xmmc //定义变量,存放工资项目
Declare c1 cursor for //定义游标,取出工资项目的含义
Select xm,xmmc from tbl_gzxmdy;
 Open c1 ;
 Fetch c1 into:ls_xm,:ls_xmmc;
 //循环提取数据到变量中
 Do while sqlca.sqlcode =0
  If isnull(ls_xmmc) or ls_xmmc ='' then
   //对没有定义的工资项目进行隐藏
   Dw_1.modify(ls_xm+".width=0")
  Else
   //设置工资发放项目的台头
   Dw_1.modify(ls_xm+"_t.text='"+ls_xmmc+"'")
  End if
  Fetch c1 into:ls_xm,:ls_xmmc;
 Loop

Close c1;
dw_1.retrieve()

  然后呢,当然就是对数据窗口进行设置,让它具有自动计算功能了。
数据窗口的ItemChanged事件是对每一列值发生变化时触发的,我们只要对它进行编程就可以实现自动计算功能。

String ls_xm, ls_jsgs //定义变量,存放工资项目,计算公式
String ls_dwoname
Double ldc_je //得到计算公式计算的结果值

This.accepttext()
Declare c1 cursor for //定义游标,取出工资项目的含义
Select xm,jsgs from tbl_gzxmdy;
Open c1 ;
Fetch c1 into:ls_xm,:ls_jsgs;
//循环提取数据到变量中
Do while sqlca.sqlcode =0
 If isnull(ls_jsgs) or ls_jsgs ='' then
 Else
  //计算统计列结果,利用Evaluate计算
  ldc_je = double(dw_1.Describe("Evaluate(lookupdisplay('" + ls_jsgs+"')" +row+ ")"))
  //设置计算结果到工资统计项目列
  this.setitemnumber(row,ls_xm,ldc_je)
 End if
 Fetch c1 into:ls_xm,:ls_jsgs;
Loop
Close c1;

  程序已经在PB7.0+Oracle8i 下测试通过。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台