以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  从access转换到Sql数据源后出的问题,求助  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=8250)

--  作者:shixia
--  发布时间:2010/9/23 17:37:00
--  从access转换到Sql数据源后出的问题,求助


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

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

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

--  作者:blackzhu
--  发布时间:2010/9/24 7:26:00
--  
查查列的类型,是不是月上缴_3列的类型不对?
--  作者:狐狸爸爸
--  发布时间:2010/9/24 9:05:00
--  

1、看看列类型是否正确

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


--  作者:shixia
--  发布时间: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 票据号码 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
--  发布时间: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
--  发布时间: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编辑过]