Foxtable(狐表)用户栏目专家坐堂 → 从access转换到Sql数据源后出的问题,求助


  共有13293人关注过本帖树形打印复制链接

主题:从access转换到Sql数据源后出的问题,求助

帅哥哟,离线,有人找我吗?
shixia
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:754 积分:6991 威望:0 精华:1 注册:2008/9/2 20:04:00
从access转换到Sql数据源后出的问题,求助  发帖心情 Post By:2010/9/23 17:37:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

请问以上提示是什么意思?

[此贴子已经被作者于2010-9-24 10:36:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2010/9/24 7:26:00 [只看该作者]

查查列的类型,是不是月上缴_3列的类型不对?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/24 9:05:00 [只看该作者]

1、看看列类型是否正确

2、SQL Server的SQL语法和Access有细微差别,转换之后,在执行SQL测试一下你的SQL语句。


 回到顶部
帅哥哟,离线,有人找我吗?
shixia
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:754 积分:6991 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2010/9/24 10:12:00 [只看该作者]

这是在SQLCrossTableBuilder中生成的表,其中列“月上缴”也是生成的列。该代码原来在 Access中运行正常,转换成SQL后,对逻辑列和日期列代码作了调整。

以下是我变态代码,该代码在我的项目中运行是最慢的一个,我总想减肥提高效率,但是苦于对SQL不精通,用SQLCrossTableBuilder也只能实现部分功能(比如增加一个列),以前我曾提出一想法(http://www.foxtable.com/dispbbs.asp?boardid=2&Id=6354&page=2   http://www.foxtable.com/dispbbs.asp?boardid=2&Id=6253&page=2 ),狐爸表示难以解决。现贴出,看大家能不能给点建议和指导。


Dim g As New SQLCrossTableBuilder("费用核算表","收费")
g.C
g.AddTable("收费","任务人","人员管理","姓名")
g.AddCols("人员管理","姓名","返回比例","任务","月扣款","应发工资","费用","上缴","超费用比例")
g.HGroups.AddDef("交款日期", "月份")
g.VGroups.AddDef("任务人")
g.Totals.AddDef("收费金额", "月收入")
g.Totals.AddExp("收费金额累计","0")
g.Totals.AddDef("任务", AggregateEnum.Average)
g.Totals.AddExp("任务进度","[收费金额]/[任务]")
g.Totals.AddDef("返回比例",AggregateEnum.Average)
g.Totals.AddExp("纯收入","[收费金额]*(1-[返回比例])")
g.Totals.AddExp("应发工资","[应发工资]",AggregateEnum.Average)
g.Totals.AddExp("上月未发工资","0")

g.Totals.AddDef("费用",AggregateEnum.Average)
g.Totals.AddDef("上缴",AggregateEnum.Average)
g.Totals.AddExp("月扣款","0")
g.Totals.AddExp("考评款","0")

g.Totals.AddDef("超费用比例",AggregateEnum.Average)

g.Totals.AddExp("月上缴","0")
g.Totals.AddExp("月上缴累计","0")
g.Totals.AddExp("上月余额","0")
g.Totals.AddExp("可用款","0")
g.Totals.AddExp("实发工资","0")
g.Totals.AddExp("补发工资","0")
g.Totals.AddExp("未发工资","0")
g.Totals.AddExp("月可报费用","0")
g.Totals.AddExp("超任务费用","0")
g.Totals.AddExp("可报费用累计","0")


g.Totals.AddExp("余额","0") '等于 可用款 - 实发工资 -补发工资-月可报费用


g.Totals.AddExp("已报费用","0")
g.Totals.AddExp("已报费用累计","0")
g.Totals.AddExp("未报费用累计","0")
g.Decimals=2 '整数型,用于设置统计结果要保留的小数位数.

g.Filter = "[任务年度]=" & de.year & "And [交款日期] is not null And [二评] = 1 And [任务人]<>'中心'"
g.Build '生成统计表

'判断有无相关行
Dim cmdw As New SQLCommand
Dim dtw As datatable
cmdw.C
cmdw.CommandText = "SELECT DISTINCT piao据号码 From {收费} where [任务年度]=" & de.year & "And [交款日期] is not null And [二评] = 1 And [任务人]<>'中心'"
dtw = cmdw.ExecuteReader()
If dtw.DataRows.Count>0 Then
Dim cmd As New SQLCommand
Dim dt As datatable
cmd.C
cmd.CommandText = "SELECT DISTINCT 姓名 From {人员管理} Where [单位名称]='认证中心' And [任务] > 0"
dt = cmd.ExecuteReader()

Dim ry As String = dt.GetComboListString("姓名")
Dim Values() As String
Values = ry.split("|")
For i As Integer = 0 To Tables("费用核算表").count-1

'进度条
StatusBar.ProgressBar.Visible =True
StatusBar.Refresh()
StatusBar.ProgressBar.Maximum=Tables("费用核算表").count-1
StatusBar.ProgressBar.Value = i

For ii As Integer = 1 To ry.split("|").length



'直接在后台数据库中提取人员管理月扣款
Dim ldmt As Double
Dim cmdmt As New SQLCommand
cmdmt.C
cmdmt.CommandText = "Select Sum(月扣款) From {人员管理} Where [姓名] = '" & Values(ii-1) & "'"
ldmt = cmdmt.ExecuteScalar()
'从后台数据库中业务表中提取一评值
Dim ldmt2 As Double
Dim cmdmt2 As New SQLCommand
cmdmt2.C
cmdmt2.CommandText = "Select Sum(一评值) From {业务} Where [二评]=1 And [缴款]=1 And [任务人] = '" & Values(ii-1) & "' And Month([缴款日期]) =" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldmt2 = cmdmt2.ExecuteScalar()

'从后台数据库中业务表中提取二评值,用于扣任务人的款
Dim ldmt3 As Double
Dim cmdmt3 As New SQLCommand
cmdmt3.C
cmdmt3.CommandText = "Select Sum(二评值) From {业务} Where [二评]=1 And [缴款]=1 And [任务人] = '" & Values(ii-1) & "' And Month([缴款日期]) =" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldmt3 = cmdmt3.ExecuteScalar()

'从后台数据库中业务表中提取二评值,用于扣一评人的款
Dim ldmt4 As Double
Dim cmdmt4 As New SQLCommand
cmdmt4.C
cmdmt4.CommandText = "Select Sum(二评值) From {业务} Where [二评]=1 And [缴款]=1 And [一评人] = '" & Values(ii-1) & "' And Month([缴款日期]) =" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldmt4 = cmdmt4.ExecuteScalar()

Tables("费用核算表").Rows(i)("月扣款_" & ii & "")=ldmt+ldmt2+ldmt3+ldmt4
Tables("费用核算表").Rows(i)("考评款_" & ii & "")=ldmt2+ldmt3+ldmt4
'直接在后台数据库中提取支出表中的已报费用
Dim ldm As Double
Dim cmdm As New SQLCommand
cmdm.C
cmdm.CommandText = "Select Sum(流出金额) From {支出} Where 已拨款=1 And 收支类型 <> '工资' And 收支类型 <> '借出' And 收支类型 <> '还款' And 收支类型 <> '联合办案' And 任务人 = '" & Values(ii-1) & "' And Month(签字日期) =" & Tables("费用核算表").rows(i)("月份") & "And 年度 =" & de.year
ldm = cmdm.ExecuteScalar()
Tables("费用核算表").rows(i)("已报费用_" & ii & "")=ldm


If i=0 Then '第一行上月余额为0
Tables("费用核算表").rows(i)("上月余额_" & ii & "") =0
Tables("费用核算表").rows(i)("上月未发工资_" & ii & "")=0 '第一个月的上月未发工资等于 0
Tables("费用核算表").rows(i)("收费金额累计_" & ii & "")= Tables("费用核算表").rows(i)("收费金额_" & ii & "")
Tables("费用核算表").rows(i)("已报费用累计_" & ii & "")= Tables("费用核算表").rows(i)("已报费用_" & ii & "")
Else
Tables("费用核算表").rows(i)("上月余额_" & ii & "") =Tables("费用核算表").rows(i-1)("余额_" & ii & "") '只要不是第一行,上月余额等于上行的余额
Tables("费用核算表").rows(i)("上月未发工资_" & ii & "")= Tables("费用核算表").rows(i-1)("未发工资_" & ii & "") '除第一个月以外,上月未发工资 等于 上个月的未发工资 ,而上个月的未发工资 = 上个月应发工资+上上个月未发结转 -上个月实发 -上个月补发
Tables("费用核算表").rows(i)("收费金额累计_" & ii & "")= Tables("费用核算表").rows(i-1)("收费金额累计_" & ii & "")+ Tables("费用核算表").rows(i)("收费金额_" & ii & "")
Tables("费用核算表").rows(i)("已报费用累计_" & ii & "")= Tables("费用核算表").rows(i-1)("已报费用累计_" & ii & "")+ Tables("费用核算表").rows(i)("已报费用_" & ii & "")
End If
'计算 月上缴款
If Tables("费用核算表").rows(i)("收费金额累计_" & ii & "")<= Tables("费用核算表").rows(i)("任务_" & ii & "") '没有超出总任务时
Dim ss As Double
ss=Tables("费用核算表").Rows(i)("上缴_" & ii & "") * Tables("费用核算表").Rows(i)("收费金额_" & ii & "")/Tables("费用核算表").Rows(i)("任务_" & ii & "")

Tables("费用核算表").Rows(i)("月上缴_" & ii & "")=ss

Elseif Tables("费用核算表").rows(i)("收费金额累计_" & ii & "") > Tables("费用核算表").rows(i)("任务_" & ii & "") '超出总任务时
If Tables("费用核算表").rows(i)("任务_" & ii & "") >= Tables("费用核算表").rows(i-1)("收费金额累计_" & ii & "") Then '超过任务的转折时点只有一个月,判断标准为:在本月累计收入已超总任务的前提下,总任务如果比上个月收入累计 大的话,那么这个月就是转折时点
Dim sw As Double = _
Tables("费用核算表").Rows(i)("上缴_" & ii & "") * _
( Tables("费用核算表").Rows(i)("任务_" & ii & "") - Tables("费用核算表").Rows(i-1)("收费金额累计_" & ii & "") ) / Tables("费用核算表").Rows(i)("任务_" & ii & "") + _
( Tables("费用核算表").Rows(i)("收费金额累计_" & ii & "")-Tables("费用核算表").Rows(i)("任务_" & ii & ""))*(1-Tables("费用核算表").rows(i)("返回比例_" & ii & "")) *(1-Tables("费用核算表").rows(i)("超费用比例_" & ii & "")) '超任务部分扣除返回后的纯收入,再扣留超任务费用后的值 是应缴额
Tables("费用核算表").Rows(i)("月上缴_" & ii & "")=sw
Else '过了超任务时点后的几个月内,
Dim sq As Double = _
Tables("费用核算表").Rows(i)("收费金额_" & ii & "")*(1-Tables("费用核算表").rows(i)("返回比例_" & ii & "")) *(1-Tables("费用核算表").rows(i)("超费用比例_" & ii & "")) '扣除返回后的纯收入 再扣留超任务的费用后的值就是应缴额
Tables("费用核算表").Rows(i)("月上缴_" & ii & "")=sq
End If
End If
If i=0 Then '第一行上月余额为0
Tables("费用核算表").rows(i)("月上缴累计_" & ii & "")=Tables("费用核算表").rows(i)("月上缴_" & ii & "")

Else
Tables("费用核算表").rows(i)("月上缴累计_" & ii & "")= Tables("费用核算表").rows(i-1)("月上缴累计_" & ii & "")+ Tables("费用核算表").rows(i)("月上缴_" & ii & "")
End If

'如果 纯收入-上缴-月扣款+上月余额后>0 ,才有可用款
If Tables("费用核算表").rows(i)("收费金额_" & ii & "")*(1 -Tables("费用核算表").rows(i)("返回比例_" & ii & ""))- Tables("费用核算表").Rows(i)("月上缴_" & ii & "")- Tables("费用核算表").Rows(i)("月扣款_" & ii & "")+Tables("费用核算表").rows(i)("上月余额_" & ii & "") >0 Then
Dim s As Double= _
Tables("费用核算表").rows(i)("收费金额_" & ii & "")*(1-Tables("费用核算表").rows(i)("返回比例_" & ii & ""))- _
Tables("费用核算表").Rows(i)("月上缴_" & ii & "")- _
Tables("费用核算表").Rows(i)("月扣款_" & ii & "")+ _
Tables("费用核算表").rows(i)("上月余额_" & ii & "")

Dim Digits As Integer = 0 '要保留的小数位数,根据需要修改
Dim Value As Double =s '要进行四舍五入的小数值
Value = Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
Tables("费用核算表").rows(i)("可用款_" & ii & "") =value
Else
Tables("费用核算表").rows(i)("可用款_" & ii & "") =0
End If

'下面为段代码是为了把应发工资数据补齐,因为计算当月无收入的情况下未发工资额时需要应发工资数据
Dim ld As Double
Dim cmdr As New SQLCommand
cmdr.C
cmdr.CommandText = "Select 应发工资 From {人员管理} Where 姓名 = '" & Values(ii-1) & "'" '直接在人员管理表中取各人的应发工资,即使当月无收入,也可计算出未发工资,便于在下月补发
ld = cmdr.ExecuteScalar()
Tables("费用核算表").rows(i)("应发工资_" & ii & "") = ld
'以下代码按照 应发本月工资 补发工资 月可报费用 三个层次逐步推进
'为了计算应发工资
If Tables("费用核算表").rows(i)("可用款_" & ii & "")>=Tables("费用核算表").rows(i)("应发工资_" & ii & "") Then '如果 可用款>=应发工资,才能发全额工资
Tables("费用核算表").rows(i)("实发工资_" & ii & "")=Tables("费用核算表").rows(i)("应发工资_" & ii & "")
If Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "") >=Tables("费用核算表").rows(i)("上月未发工资_" & ii & "") Then '如果[可用款] -[应发工资]>=[上月未发工资],优先补发上月未发工资
Tables("费用核算表").rows(i)("补发工资_" & ii & "")=Tables("费用核算表").rows(i)("上月未发工资_" & ii & "") '发完本月工资后再全额补发前面欠发的工资总额
If Tables("费用核算表").rows(i)("收费金额累计_" & ii & "")<= Tables("费用核算表").rows(i)("任务_" & ii & "") '没有超出总任务时
'可用款-应发工资-[补发工资]>当月按进度月可报费用 时
If Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "") >=Tables("费用核算表").rows(i)("费用_" & ii & "")*Tables("费用核算表").rows(i)("任务进度_" & ii & "") Then
Dim st As Double = _
Tables("费用核算表").rows(i)("费用_" & ii & "")*Tables("费用核算表").rows(i)("任务进度_" & ii & "") '可用款发完工资后的结余额大于或等于 当月进度报费用情况只能按进度报费用
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")= Math.Round(st,0)
Else '当[可用款]-[应发工资]-[补发工资]<进度费用时,只能按实际余额费用报月可报费用
Dim sn As Double = _
Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "")
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")= Math.Round(sn,0)
End If
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=0

Elseif Tables("费用核算表").rows(i)("收费金额累计_" & ii & "") > Tables("费用核算表").rows(i)("任务_" & ii & "") '超出总任务时
If Tables("费用核算表").rows(i)("任务_" & ii & "") >= Tables("费用核算表").rows(i-1)("收费金额累计_" & ii & "") Then '超过任务的转折时点只有一个月,判断标准为:在本月累计收入已超总任务的前提下,总任务如果比上个月收入累计 大的话,那么这个月就是转折时点
Dim st As Double = Tables("费用核算表").rows(i)("收费金额累计_" & ii & "") - Tables("费用核算表").rows(i)("任务_" & ii & "") '当月超任务部分收入
Dim sm As Double = Tables("费用核算表").rows(i)("任务_" & ii & "") - Tables("费用核算表").rows(i-1)("收费金额累计_" & ii & "") '当月任务内部分收入
'等于 (任务-上月收费金额累计)即当月任务内的收入 占任务的比例 * 总费用

Dim re As Double= Tables("费用核算表").rows(i)("费用_" & ii & "")- Tables("费用核算表").rows(i-1)("可报费用累计_" & ii & "") '用总费用减去上一行的可报费用累计,上一行的可报费用累计不含超费用
'从后台数据库中业务表中提取一评值
Dim ldt2 As Double
Dim cmdt2 As New SQLCommand
cmdt2.C
cmdt2.CommandText = "Select Sum(一评值) From {业务} Where [二评]=1 And [缴款]=1 And [任务人] = '" & Values(ii-1) & "' And Month([缴款日期]) <=" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldt2 = cmdt2.ExecuteScalar()

'从后台数据库中业务表中提取二评值,用于扣任务人的款
Dim ldt3 As Double
Dim cmdt3 As New SQLCommand
cmdt3.C
cmdt3.CommandText = "Select Sum(二评值) From {业务} Where [二评]=1 And [缴款]=1 And [任务人] = '" & Values(ii-1) & "' And Month([缴款日期]) <=" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldt3 = cmdt3.ExecuteScalar()

'从后台数据库中业务表中提取二评值,用于扣一评人的款
Dim ldt4 As Double
Dim cmdt4 As New SQLCommand
cmdt4.C
cmdt4.CommandText = "Select Sum(二评值) From {业务} Where [二评]=1 And [缴款]=1 And [一评人] = '" & Values(ii-1) & "' And Month([缴款日期]) <=" & Tables("费用核算表").rows(i)("月份") & "And Year([缴款日期]) = " & de.year
ldt4 = cmdt4.ExecuteScalar()
Dim cpc As Double = ldt2+ldt3+ldt4
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")=Math.Round(re,0)-cpc '扣除考评款

'等于 ( 收费金额累计 - 总任务 )*(1-返回比例)*超费用比例
Dim we As Double=st * (1- Tables("费用核算表").rows(i)("返回比例_" & ii & "")) * Tables("费用核算表").rows(i)("超费用比例_" & ii & "")

' 可用 款-应发工资-补发工资-月可报费用>超任务费用
If Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "") - Tables("费用核算表").rows(i)("月可报费用_" & ii & "") >= we Then
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=Math.Round(we,0)
Else
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "") - Tables("费用核算表").rows(i)("月可报费用_" & ii & "")
End If
Else '过了超任务时点后的几个月内,超任务为本月累计 - 上月收入累计
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")= 0
Dim sy As Double =Tables("费用核算表").rows(i)("收费金额累计_" & ii & "") -Tables("费用核算表").rows(i-1)("收费金额累计_" & ii & "")
Dim qw As Double = sy * (1- Tables("费用核算表").rows(i)("返回比例_" & ii & "")) * Tables("费用核算表").rows(i)("超费用比例_" & ii & "")
If Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "") - Tables("费用核算表").rows(i)("月可报费用_" & ii & "") >= qw Then
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=Math.Round(qw,0)-Tables("费用核算表").rows(i)("考评款_" & ii & "")
Else
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "") - Tables("费用核算表").rows(i)("月可报费用_" & ii & "")-Tables("费用核算表").rows(i)("考评款_" & ii & "")
End If

End If
End If
Else '如果[可用款] -[应发工资]<[上月未发工资],按[可用款] -[应发工资]余额来发未发工资
Tables("费用核算表").rows(i)("补发工资_" & ii & "")=Tables("费用核算表").rows(i)("可用款_" & ii & "")-Tables("费用核算表").rows(i)("应发工资_" & ii & "")
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")=0
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=0

[此贴子已经被作者于2010-9-24 10:14:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
shixia
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:754 积分:6991 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2010/9/24 10:12:00 [只看该作者]


End If
Else '如果可用款<应发工资,那么补发工资为0,费用为0
Tables("费用核算表").rows(i)("实发工资_" & ii & "")=Tables("费用核算表").rows(i)("可用款_" & ii & "")
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")=0
Tables("费用核算表").rows(i)("补发工资_" & ii & "")=0
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")=0
End If

Tables("费用核算表").rows(i)("未发工资_" & ii & "")=Tables("费用核算表").rows(i)("应发工资_" & ii & "")+ Tables("费用核算表").rows(i)("上月未发工资_" & ii & "")-Tables("费用核算表").rows(i)("实发工资_" & ii & "")-Tables("费用核算表").rows(i)("补发工资_" & ii & "")
'如果 纯收入 -月上缴+上月余额 <= 月扣款
If Tables("费用核算表").rows(i)("收费金额_" & ii & "")*(1-Tables("费用核算表").rows(i)("返回比例_" & ii & ""))- Tables("费用核算表").Rows(i)("月上缴_" & ii & "")+Tables("费用核算表").rows(i)("上月余额_" & ii & "")<=Tables("费用核算表").Rows(i)("月扣款_" & ii & "") Then '为了计算每月扣款,

Dim ss As Double '计算纯收入-月上缴 +上月余额 值,余额值等于 负值
ss=Tables("费用核算表").rows(i)("收费金额_" & ii & "")*(1-Tables("费用核算表").rows(i)("返回比例_" & ii & ""))- Tables("费用核算表").Rows(i)("月上缴_" & ii & "")+Tables("费用核算表").rows(i)("上月余额_" & ii & "")
Dim Digits8 As Integer = 0 '要保留的小数位数,根据需要修改
Dim Value8 As Double =ss '要进行四舍五入的小数值
Value8 = Math.Floor(Value8 * 10 ^ Digits8 + 0.5) / 10 ^ Digits8 '四舍五入
Tables("费用核算表").rows(i)("余额_" & ii & "") =value8-Tables("费用核算表").rows(i)("月扣款_" & ii & "")
Else '如果 纯收入 -月上缴+上月余额 > 月扣款
Tables("费用核算表").rows(i)("余额_" & ii & "")= Tables("费用核算表").rows(i)("可用款_" & ii & "")- _
Tables("费用核算表").rows(i)("实发工资_" & ii & "")- _
Tables("费用核算表").rows(i)("补发工资_" & ii & "")- _
Tables("费用核算表").rows(i)("月可报费用_" & ii & "")- _
Tables("费用核算表").rows(i)("超任务费用_" & ii & "")
End If

If i=0 Then '第一行上月余额为0
Tables("费用核算表").rows(i)("可报费用累计_" & ii & "")= Tables("费用核算表").rows(i)("月可报费用_" & ii & "") + Tables("费用核算表").rows(i)("超任务费用_" & ii & "")
Else
Tables("费用核算表").rows(i)("可报费用累计_" & ii & "")= Tables("费用核算表").rows(i-1)("可报费用累计_" & ii & "")+ Tables("费用核算表").rows(i)("月可报费用_" & ii & "")+ Tables("费用核算表").rows(i)("超任务费用_" & ii & "")
End If
Tables("费用核算表").rows(i)("未报费用累计_" & ii & "")= Tables("费用核算表").rows(i)("可报费用累计_" & ii & "")- Tables("费用核算表").rows(i)("已报费用累计_" & ii & "")

'隐藏列
Tables("费用核算表").Cols("任务_" & ii & "").Visible = False
Tables("费用核算表").Cols("返回比例_" & ii & "").Visible = False
Tables("费用核算表").Cols("上缴_" & ii & "").Visible = False
Tables("费用核算表").Cols("应发工资_" & ii & "").Visible = False
Tables("费用核算表").Cols("上月未发工资_" & ii & "").Visible = False
Tables("费用核算表").Cols("费用_" & ii & "").Visible = False
Tables("费用核算表").Cols("超费用比例_" & ii & "").Visible = False
Tables("费用核算表").Cols("月上缴累计_" & ii & "").Visible = False
Tables("费用核算表").Cols("收费金额累计_" & ii & "").Visible = False
Tables("费用核算表").Cols("可报费用累计_" & ii & "").Visible = False
Tables("费用核算表").Cols("已报费用累计_" & ii & "").Visible = False

Next
Next

MainTable=Tables("费用核算表")

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/9/24 12:38:00 [只看该作者]

晕啊~   建议把所有的类似:

Dim ldmt As Double
Dim cmdmt As New SQLCommand
cmdmt.C
cmdmt.CommandText = "Select Sum(月扣款) From {人员管理} Where [姓名] = '" & Values(ii-1) & "'"
ldmt = cmdmt.ExecuteScalar()

 

这样的东东都放到,for  。。。 next 的前面去,不要放在其中!  且相类似的(条件相同的)合并一起到一个.CommandText = "Select.....From  里面去,与 i 或 ii 条件有关的都不要,保留一个时间段的条件, 计算时再添加条件来计算。。。。

[此贴子已经被作者于2010-9-24 13:42:05编辑过]

 回到顶部