ASP SQL 代码个人所得税计算方法不对 求帮助

求助!asp 中 SQL嵌套查询语句怎么写?
[问题点数:40分,结帖人fyhrx]
本版专家分:0
结帖率 92.31%
CSDN今日推荐
本版专家分:194
本版专家分:0
本版专家分:88345
2008年10月 总版技术专家分月排行榜第三
2009年1月 Web 开发大版内专家分月排行榜第一2008年12月 Web 开发大版内专家分月排行榜第一2008年10月 Web 开发大版内专家分月排行榜第一2008年9月 Web 开发大版内专家分月排行榜第一2008年8月 Web 开发大版内专家分月排行榜第一
2009年3月 Web 开发大版内专家分月排行榜第二2009年2月 Web 开发大版内专家分月排行榜第二2008年11月 Web 开发大版内专家分月排行榜第二
本版专家分:194
本版专家分:9888
本版专家分:0
本版专家分:194
本版专家分:0
本版专家分:194
本版专家分:9888
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐基于ACCESS和ASP的SQL多个表查询与计算统计代码(二)库存管理系统...
基于ACCESS和ASP的SQL多个表查询与计算统计代码(二)库存管理系统
距离上一篇竟然已经一年半的时间,明日复明日呀,借着这次写库存管理系统的机会,再总结一些ACCESS和ASP的SQL问题。此次总结的要点在于把查询(Select语句)作为表(AS语句)与表或查询再次进行Select的多表查询方法,逻辑上要很注意,非常容易把自己绕进去。
一、问题的提出
【出库和入库明细的Select语句,需要写出一个库存Select查询,包括A仓、B仓和分仓。】
二、解决入库、出库的统计
那么,首先Select Sum(入库数量),并Group By 产品编号,Having(入库仓库=A仓),可以形成一个对于A仓入库的统计表,【入库统计查询】代码及结果如下。
SELECT chanpin.ID AS 序号, chanpin.CPno AS 产品编号, chanpin.CPpinpai AS 产品品牌, chanpin.CPname AS 产品名称, chanpin.CPKind AS 产品规格, chanpin.CPunit as 计数单位, SUM(inck.INnum) AS 入库数量
FROM inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK
HAVING(inck.ToCK='KJC-A')
此时若【入库统计查询】直接以左链(LEFT JOIN)将出库JOIN一起的话,会由于只能采用对应仓库的方式链接(ON 入库.仓库=出库.仓库)来链接,这样只会重复计算形成冗余,数据也是错误的,这并不是我需要的结果,如下看错误的测试:
SELECT chanpin.ID AS 序号, chanpin.CPno AS 产品编号, chanpin.CPpinpai AS 产品品牌, chanpin.CPname AS 产品名称, chanpin.CPKind AS 产品规格, chanpin.CPunit as 计数单位, SUM(inck.INnum) AS 入库数量, SUM(outck.OUTnum) as 出库数量
FROM (inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno)
Left JOIN outck ON inck.ToCK=outck.FromCK
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK
HAVING(inck.ToCK='KJC-A')
这是个错误的结果,从入库、出库明细来看,总入库、出库均重复计算了,数值当然是错误的。因此,不能简单的左链接来解决。
三、解决对入库出库的合并形成库存表
经过画简单的拓扑图,结论是应当把出库统计查询作为一个表来LEFT JOIN到入库统计查询里,此时对于链接的字段就不再是仓库了,而是已产品编号为链接字段,最后的结论及结果如下:
SELECT chanpin.ID AS 序号, chanpin.CPno AS 产品编号, chanpin.CPpinpai AS 产品品牌, chanpin.CPname AS 产品名称, chanpin.CPKind AS 产品规格, chanpin.CPunit as 计数单位, SUM(inck.INnum) AS 入库数量, IIF(AA.CC is not null,AA.CC,0) as 出库数量, 入库数量-出库数量 as 库存数量
FROM (inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno)
left JOIN (select outck.outcp as BB, IIF(Sum(outck.OUTnum) is not null,Sum(outck.OUTnum),0) as CC From outck
GROUP BY outck.outcp, outck.FromCK HAVING(outck.FromCK='KJC-A')) as AA ON inck.INcp = AA.BB
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK, AA.CC
HAVING(inck.ToCK='KJC-A')LEFT JOIN()部分为出库统计查询,作为表左链接到入库统计查询里。
完成了A仓,同理可以完成B仓。
写出SQL,按单位统计并以单位发布的信息条数排名
没有更多推荐了,ASP网页防SQL注入的代码
我的图书馆
ASP网页防SQL注入的代码
近日笔者的小站遭受到SQL入侵,于是上网搜索了一些相关防SQL注入的方法。
版本颇多,有人觉得这段好用,有人以为那段才行,因此综合整理了一下,包含以下几种:
以下为引用的内容:&% Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx '---定义部份 头------ Fy_Cl = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Fy_Zx = "index.Asp" '出错时转向的页面 '---定义部份 尾------ On Error Resume Next Fy_Url=Request.ServerVariables("QUERY_STRING") Fy_a=split(Fy_Url,"&") redim Fy_Cs(ubound(Fy_a)) On Error Resume Next for Fy_x=0 to ubound(Fy_a) Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1) Next For Fy_x=0 to ubound(Fy_Cs) If Fy_Cs(Fy_x)&&"" Then If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")&&0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")&&0 Then Select Case Fy_Cl Case "1" Response.Write "&Script Language=JavaScript&alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&" 的值中包含非法字符串!\n\n 请不要在参数中出现:and,select,update,insert,delete,chr 等非法字符!\n\n我已经设置了不能SQL注入,请不要对我进行非法手段!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Fy_Zx&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&"的值中包含非法字符串!\n\n 请不要在参数中出现:,and,select,update,insert,delete,chr 等非法字符!\n\n设计了门,非法侵入请离开,谢谢!');location.href='"&Fy_Zx&"';&/Script&" End Select Response.End End If End If Next %&
以上代码为较多网友所用,从使用的感言来看,效果显著。
以下为引用的内容:Dim Query_Badword,Form_Badword,Err_Message,Err_Web,form_name '------定义部份 头---------------------------------------------------------------------- Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Err_Web = "Err.Asp" '出错时转向的页面 Query_Badword="'‖and‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖=" '在这部份定义get非法参数,使用"‖"号间隔 Form_Badword="'‖%‖&‖*‖#‖@‖=‖select‖and‖set‖delete" '在这部份定义post非法参数,使用"‖"号间隔 '------定义部份 尾----------------------------------------------------------------------- ' On Error Resume Next '----- 对 get query 值 的过滤. if request.QueryString&&"" then Chk_badword=split(Query_Badword,"‖") FOR EACH Query_form_name IN Request.QueryString for i=0 to ubound(Chk_badword) If Instr(LCase(request.QueryString(Query_form_name)),Chk_badword(i))&&0 Then Select Case Err_Message Case "1" Response.Write "&Script Language=JavaScript&alert('传参错误!参数 "&form_name&" 的值中包含非法字符串!\n\n请不要在参数中出现: insert mid master 等非法字符!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Err_Web&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert('传参错误!参数 "&form_name&"的值中包含非法字符串!\n\n请不要在参数中出现: insert mid master 等非法字符!');location.href='"&Err_Web&"';&/Script&" End Select Response.End End If NEXT NEXT End if '-----对 post 表 单值的过滤. if request.form&&"" then Chk_badword=split(Form_Badword,"‖") FOR EACH form_name IN Request.Form for i=0 to ubound(Chk_badword) If Instr(LCase(request.form(form_name)),Chk_badword(i))&&0 Then Select Case Err_Message Case "1" Response.Write "&Script Language=JavaScript&alert('出错了!表单 "&form_name&" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Err_Web&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert('出错了!参数 "&form_name&"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');location.href='"&Err_Web&"';&/Script&" End Select Response.End End If NEXT NEXT end if
以上是另一种版本。
以下为引用的内容:&%Dim&GetFlag&Rem(提交方式)Dim&ErrorSql&Rem(非法字符)&Dim&RequestKey&Rem(提交数据)Dim&ForI&Rem(循环标记)ErrorSql&=&"'~;~and~(~)~exec~update~count~*~%~chr~mid~master~truncate~char~declare"&Rem(每个敏感字符或者词语请使用半角&"~"&格开)ErrorSql&=&split(ErrorSql,"~")If&Request.ServerVariables("REQUEST_METHOD")="GET"&ThenGetFlag=TrueElseGetFlag=FalseEnd&IfIf&GetFlag&ThenFor&Each&RequestKey&In&Request.QueryStringFor&ForI=0&To&Ubound(ErrorSql)If&Instr(LCase(Request.QueryString(RequestKey)),ErrorSql(ForI))&&0&Thenresponse.write&"&script&alert(""警告:\n请不要做任何尝试"");location.href=""index.asp"";&/script&"Response.EndEnd&IfNextNext&ElseFor&Each&RequestKey&In&Request.FormFor&ForI=0&To&Ubound(ErrorSql)If&Instr(LCase(Request.Form(RequestKey)),ErrorSql(ForI))&&0&Thenresponse.write&"&script&alert(""警告:\n请不要做任何尝试"");location.href=""index.asp"";&/script&"Response.EndEnd&IfNextNextEnd&If%&
将上述代码放入conn文件中即可,功能较全面……
喜欢该文的人也喜欢&以下为引用的内容:&% Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx '---定义部份 头------ Fy_Cl = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Fy_Zx = "index.Asp" '出错时转向的页面 '---定义部份 尾------ On Error Resume Next Fy_Url=Request.ServerVariables("QUERY_STRING") Fy_a=split(Fy_Url,"&") redim Fy_Cs(ubound(Fy_a)) On Error Resume Next for Fy_x=0 to ubound(Fy_a) Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1) Next For Fy_x=0 to ubound(Fy_Cs) If Fy_Cs(Fy_x)&&"" Then If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")&&0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")&&0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")&&0 Then Select Case Fy_Cl Case "1" Response.Write "&Script Language=JavaScript&alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&" 的值中包含非法字符串!\n\n 请不要在参数中出现:and,select,update,insert,delete,chr 等非法字符!\n\n我已经设置了不能SQL注入,请不要对我进行非法手段!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Fy_Zx&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert(' 出现错误!参数 "&Fy_Cs(Fy_x)&"的值中包含非法字符串!\n\n 请不要在参数中出现:,and,select,update,insert,delete,chr 等非法字符!\n\n设计了门,非法侵入请离开,谢谢!');location.href='"&Fy_Zx&"';&/Script&" End Select Response.End End If End If Next %& &以上代码为较多网友所用,从使用的感言来看,效果显著。以下为引用的内容:Dim Query_Badword,Form_Badword,Err_Message,Err_Web,form_name '------定义部份 头---------------------------------------------------------------------- Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Err_Web = "Err.Asp" '出错时转向的页面 Query_Badword="'‖and‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖=" '在这部份定义get非法参数,使用"‖"号间隔 Form_Badword="'‖%‖&‖*‖#‖@‖=‖select‖and‖set‖delete" '在这部份定义post非法参数,使用"‖"号间隔 '------定义部份 尾----------------------------------------------------------------------- ' On Error Resume Next '----- 对 get query 值 的过滤. if request.QueryString&&"" then Chk_badword=split(Query_Badword,"‖") FOR EACH Query_form_name IN Request.QueryString for i=0 to ubound(Chk_badword) If Instr(LCase(request.QueryString(Query_form_name)),Chk_badword(i))&&0 Then Select Case Err_Message Case "1" Response.Write "&Script Language=JavaScript&alert('传参错误!参数 "&form_name&" 的值中包含非法字符串!\n\n请不要在参数中出现: insert mid master 等非法字符!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Err_Web&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert('传参错误!参数 "&form_name&"的值中包含非法字符串!\n\n请不要在参数中出现: insert mid master 等非法字符!');location.href='"&Err_Web&"';&/Script&" End Select Response.End End If NEXT NEXT End if '-----对 post 表 单值的过滤. if request.form&&"" then Chk_badword=split(Form_Badword,"‖") FOR EACH form_name IN Request.Form for i=0 to ubound(Chk_badword) If Instr(LCase(request.form(form_name)),Chk_badword(i))&&0 Then Select Case Err_Message Case "1" Response.Write "&Script Language=JavaScript&alert('出错了!表单 "&form_name&" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');window.close();&/Script&" Case "2" Response.Write "&Script Language=JavaScript&location.href='"&Err_Web&"'&/Script&" Case "3" Response.Write "&Script Language=JavaScript&alert('出错了!参数 "&form_name&"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');location.href='"&Err_Web&"';&/Script&" End Select Response.End End If NEXT NEXT end if&以上是另一种版本。以下为引用的内容:&%Dim GetFlag Rem(提交方式)Dim ErrorSql Rem(非法字符) Dim RequestKey Rem(提交数据)Dim ForI Rem(循环标记)ErrorSql = "'~;~and~(~)~exec~update~count~*~%~chr~mid~master~truncate~char~declare" Rem(每个敏感字符或者词语请使用半角 "~" 格开)ErrorSql = split(ErrorSql,"~")If Request.ServerVariables("REQUEST_METHOD")="GET" ThenGetFlag=TrueElseGetFlag=FalseEnd IfIf GetFlag ThenFor Each RequestKey In Request.QueryStringFor ForI=0 To Ubound(ErrorSql)If Instr(LCase(Request.QueryString(RequestKey)),ErrorSql(ForI))&&0 Thenresponse.write "&script&alert(""警告:\n请不要做任何尝试"");location.href=""index.asp"";&/script&"Response.EndEnd IfNextNext ElseFor Each RequestKey In Request.FormFor ForI=0 To Ubound(ErrorSql)If Instr(LCase(Request.Form(RequestKey)),ErrorSql(ForI))&&0 Thenresponse.write "&script&alert(""警告:\n请不要做任何尝试"");location.href=""index.asp"";&/script&"Response.EndEnd IfNextNextEnd If%&&将上述代码放入conn文件中即可,功能较全面……
阅读(...) 评论()拒绝访问 | www.idcicp.com | 百度云加速
请打开cookies.
此网站 (www.idcicp.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(446a3e2f8939436a-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 个税计算办法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信