求这样的存储过程,中午就要交了。

showfray 2005-12-23 11:11:16
求以下代码的存储过程,中午就要上交了。请大家多多指教吧。
总的功能是:
在工资表里找出12月的所有工资数据,然后在奖金表里用姓名匹配,然后求出Num的值,然后根据税率值的判断,求出所得税,然后保存在工资表里。

Set Rss=Server.CreateObject("Adodb.RecordSet")
Sqls="Select * from gongzi Where gzmonth='12'"
Rss.Open Sqls,conn,3,3

While Not Rss.Eof

Dim Num,lv,kou
Num=0 '每条记录清零
lv=0
kou=0

Set Rs=Server.CreateObject("Adodb.RecordSet")
Sql="Select SUM(KH_JJ) as JJ from JiangJinAll where name='"&Trim(Rss("Name"))&"' and gzmonth='12'"
Rs.Open Sql,conn,1,1

If Rs.RecordCount>=1 Then
If Rs("JJ")>0 Then
JiangJin=Rs("JJ")
Else
JiangJin=0
End If
Else
JiangJin=0
End If

Num=Rss("yingfa") + JiangJin - Rss("Gl_Salary") - Rss("ZF_Accu") - Rss("YangLao_BX") - Rss("ShiYe_BX") - Rss("YiLiao_BX") - 1400
Tax_Num=Num

If Num<=0 Then
Num=0
lv=0.05
kou=0
End If
If Num>0 and Num<=500 Then
Num=Num*5/100
lv=0.05
kou=0
End If
If Num>500 and Num<=2000 Then
Num=Num*10/100-25
lv=0.1
kou=25
End If
If Num>2000 and Num<=5000 Then
Num=Num*15/100-125
lv=0.15
kou=125
End If
If Num>5000 and Num<=20000 Then
Num=Num*20/100-375
lv=0.2
kou=375
End If
If Num>20000 and Num<=40000 Then
Num=Num*25/100-1375
lv=0.25
kou=1375
End If
If Num>40000 and Num<=60000 Then
Num=Num*30/100-3375
lv=0.3
kou=3375
End If
If Num>60000 and Num<=80000 Then
Num=Num*35/100-6375
lv=0.35
kou=6375
End If
If Num>80000 and Num<=100000 Then
Num=Num*40/100-10375
lv=0.4
kou=10375
End If
If Num>100000 Then
Num=Num*45/100-15375
lv=0.45
kou=15375
End If

Rss("Gr_Tax")=FormatNumber(Num,2) //增加数据
Rss("Tax_Num")=FormatNumber(Tax_Num,2)
Rss("Tax_Lv")=lv
Rss("Tax_Kou")=kou
Rss.Update

Rs.Close
Set Rs=Nothing

Rss.MoveNext
Wend

Rss.Close
Set Rss=Nothing
...全文
142 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
showfray 2005-12-23
  • 打赏
  • 举报
回复
我已经从昨天到今天了,有没有好心人帮个忙呀~~

尚和空四 2005-12-23
  • 打赏
  • 举报
回复
呵呵 先 up 一下
showfray 2005-12-23
  • 打赏
  • 举报
回复
是我不懂得怎么写,大家就帮帮忙吧,这不是作业,而是我的程序需要优化它。谢谢了。
lxcooi 2005-12-23
  • 打赏
  • 举报
回复
这里有替人写作业的业务么?
showfray 2005-12-23
  • 打赏
  • 举报
回复
rawjim 2005-12-23
  • 打赏
  • 举报
回复
把你的数据库备份一个,然后把数据库文件放到网上,我帮你写这个存错过程。
这样说,那样说,没有库,没有数据,很难描述精准。
你的数据库+你的要求=你需要的存错过程
CheerYang 2005-12-23
  • 打赏
  • 举报
回复
帮你顶。

关注
showfray 2005-12-23
  • 打赏
  • 举报
回复
我也知道呀,关键碰到我不会解决的:

提示:存储过程可以在查询分析器里调试的。
有问题,调试一下,看看问题出在哪,就更快解决了。
rawjim 2005-12-23
  • 打赏
  • 举报
回复
提示:存储过程可以在查询分析器里调试的。
有问题,调试一下,看看问题出在哪,就更快解决了。
showfray 2005-12-23
  • 打赏
  • 举报
回复
以下是我中午以来的成果,但还是有错

CREATE PROCEDURE Count_Tax
@GZYear char(4),
@GZMonth char(2)
AS
Begin
Declare @name char(12)
Declare CurTax Cursor
For select name from gongzi where gzyear=@GZYear and gzmonth=@GZMonth
Open CurTax
Fetch next from CurTax into @name
While @@fetch_status=0 --第一次用@@fetch_status
Begin
Declare @Num int,@Lv int,@Kou int,@jj int
set @Num=0
set @Lv=0
set @Kou=0
set @jj=0
Declare CurJJ Cursor
For select name,sum(kh_jj) as jj from Jiangjinall where name=rtrim(@name) and gzyear=@gzyear and gzmonth=@gzmonth
Open CurJJ
Fetch next from CurJJ into @name,@jj
While @@fetch_status=0 --此处用@@fetch_status与上处用会冲突吗?
Begin
print @name
print @jj
Fetch next from CurJJ into @name,@jj
End
Fetch next from CurTax into @name
End
Close CurTax
Deallocate CurTax
End
GO


------------------------
Rss("yingfa") + JiangJin - Rss("Gl_Salary") - Rss("ZF_Accu") - Rss("YangLao_BX") - Rss("ShiYe_BX") - Rss("YiLiao_BX") - 1400

GongZi表里有字段
name char(12)
yingfa float
gl_salary float
zf_accu float
yanglao_bx float
shiye_bx float
yiliao_bx float
gzyear char(4)
gzmonth char(2)
wanglh100 2005-12-23
  • 打赏
  • 举报
回复
现在下午了,楼主交了吧!
lonaerd 2005-12-23
  • 打赏
  • 举报
回复
把你的三个表结构发出出来,每个表放一些典型数据。

无爱大叔 2005-12-23
  • 打赏
  • 举报
回复
这么艰巨的任务楼主还是交给sql版的高人吧。
别忘了列出你的表结构

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧