高分求解工资计算公式模块问题(200)

  • 主题发起人 主题发起人 唐朝笨蛋
  • 开始时间 开始时间

唐朝笨蛋

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在弄一个工资管理系统,在工资计算公式自定义方面遇到问题举例如下:第一个是:工资帐套 存储帐套 及工资项目 用户定义的公式等等 已经完成gzxm(工资项目) xmlx(项目类型) jsgs(计算公式) gsjd(公式解读) xmid(项目ID)工资天数 输入项 gz05工资单价 输入项 gz06工资金额 计算项 工资天数*工资单价 round(gz05*gz06,1) gz07第二个是工资表 存储某个月度员工的工资明细,工资表初始化等已经完成。直接调用存储过程解决。通过游标读取xmid和gsjd 然后update就可以了empid(员工编号) gzyear gzmonth gz01 gz02 gz03 ....gz30(我设置工资项目不会超过30)001 2008 12 0 0 0 ....第三个 工资管理 advstringgrid读取已经初始化数据后的工资 然后输入项为可编辑如第一个里面提到的 只要输入工资天数和工资单价 则工资金额自动修改先说一下,存储过程要解决这个并非简单因为不能确定传入哪个参数 传出的计算结果为哪个 而且工资表里并非包含这么一个公式,这个只是笨蛋的举例而已大家有什么好的想法欢迎跟贴如觉得分不够 可以另开贴给分
 
做个自定义方公式,可以保存为方案,这样算起来就灵活了。
 
唉 现在就是没头绪啊都想每次把一行数据读到临时表 进行计算后返回……但这样速度肯定受影响 还容易出错
 
写多个函数.通过函数直接去计算.传入相关参数.然后就返回结果.
 
case when (gz02-1600) between 0.00 and 500.00 then round((gz02-1600)*0.05-0.00,2) when (gz02-1600) between 500.00 and 2000.00 then round((gz02-1600)*0.01-25.00,2) when (gz02-1600) between 2000.00 and 5000.00 then round((gz02-1600)*0.15-125.00,2) when (gz02-1600) between 5000.00 and 20000.00 then round((gz02-1600)*0.20-375.00,2) when (gz02-1600) between 20000.00 and 40000.00 then round((gz02-1600)*0.25-1375.00,2) when (gz02-1600) between 40000.00 and 60000.00 then round((gz02-1600)*0.30-3375.00,2) when (gz02-1600) between 60000.00 and 80000.00 then round((gz02-1600)*0.35-6375.00,2) when (gz02-1600) between 80000.00 and 100000.00 then round((gz02-1600)*0.40-10375.00,2) when (gz02-1600) between 100000.00 and 999999.00 then round((gz02-1600)*0.45-15375.00,2)else 0 end因为工资项目,公式都是自定义的项目ID是按序生成stringgrid显示出来的工资数据,相当于excel表格了,包含了公式在里面某个输入项更改后,对应的公式里牵扯到的数据都要发生更改感觉函数实现起来不简单没头绪啊 有没做过类似的发发自己的例子看
 
我有一个例子 qq:18077968动态定义公式,定义显示公式项
 
多人接受答案了。
 
谢谢人在昆明
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部