以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 累计代码出错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126435) |
||||
-- 作者:ZJZK2018 -- 发布时间:2018/10/21 22:21:00 -- 累计代码出错 只一输入数据,软件就自动关闭,下面代码错在哪里? Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "施工单位_本期完成造价","支付比例","施工单位_应付进度款","施工单位_应抵扣款项" dr("施工单位_本期进度款") = IIF(dr("支付比例") > 0,dr("施工单位_本期完成造价") * dr("支付比例"),dr("施工单位_本期完成造价")) dr("施工单位_应付进度款") = dr("施工单位_本期进度款") - dr("施工单位_应抵扣款项") Case "监理单位_本期完成造价","支付比例","监理单位_应付进度款","监理单位_应抵扣款项" dr("监理单位_本期进度款") = IIF(dr("支付比例") > 0,dr("监理单位_本期完成造价") * dr("支付比例"),dr("监理单位_本期完成造价")) dr("监理单位_应付进度款") = dr("监理单位_本期进度款") - dr("监理单位_应抵扣款项") Case "造价单位_本期完成造价","支付比例","造价单位_应付进度款","造价单位_应抵扣款项" dr("造价单位_应付进度款") = IIF(dr("支付比例") > 0,dr("造价单位_本期完成造价") * dr("支付比例"),dr("造价单位_本期完成造价")) dr("造价单位_应付进度款") = dr("造价单位_本期进度款") - dr("造价单位_应抵扣款项") End Select \'\'=============累计计算================ Dim fdr As DataRow = DataTables("项目信息").Find("项目编号 = \'" & dr("项目编号") & "\'") If fdr IsNot Nothing Then If fdr.IsNull("核准单位") = False Then Dim zj1 As String = fdr("核准单位") & "_本期完成造价" Dim zj2 As String = fdr("核准单位") & "_本期进度款" Dim zj3 As String = fdr("核准单位") & "_应抵扣款项" Dim zj4 As String = fdr("核准单位") & "_应付进度款" Select Case e.DataCol.Name Case zj1,zj2,zj3,zj4 Dim drs As List(of DataRow) = e.DataTable.Select("", "项目编号,[_Identify]") \'注意排序参数 drs(0)("累计完成_工程造价") = drs(0)(zj1) \'设置第一行的累计支出 For i As Integer = 1 To drs.Count - 1 \'从第二行开始逐行计算累计支出 If drs(i)("项目编号") = drs(i - 1)("项目编号") Then drs(i)("累计完成_工程造价") = drs(i - 1)("累计完成_工程造价") + drs(i)(zj1) Else drs(i)("累计完成_工程造价") = drs(i)(zj1) End If Next drs(0)("累计完成_应抵扣款项") = drs(0)(zj3) \'设置第一行的累计支出 For i As Integer = 1 To drs.Count - 1 \'从第二行开始逐行计算累计支出 If drs(i)("项目编号") = drs(i - 1)("项目编号") Then drs(i)("累计完成_应抵扣款项") = drs(i - 1)("累计完成_应抵扣款项") + drs(i)(zj3) Else drs(i)("累计完成_应抵扣款项") = drs(i)(zj3) End If Next drs(0)("累计完成_工程进度款") = drs(0)(zj2) \'设置第一行的累计支出 For i As Integer = 1 To drs.Count - 1 \'从第二行开始逐行计算累计支出 If drs(i)("项目编号") = drs(i - 1)("项目编号") Then drs(i)("累计完成_工程进度款") = drs(i - 1)("累计完成_工程进度款") + drs(i)(zj2) Else drs(i)("累计完成_工程进度款") = drs(i)(zj2) End If Next drs(0)("累计完成_实付进度款") = drs(0)(zj4) \'设置第一行的累计支出 For i As Integer = 1 To drs.Count - 1 \'从第二行开始逐行计算累计支出 If drs(i)("项目编号") = drs(i - 1)("项目编号") Then drs(i)("累计完成_实付进度款") = drs(i - 1)("累计完成_实付进度款") + drs(i)(zj4) Else drs(i)("累计完成_实付进度款") = drs(i)(zj4) End If Next End Select Else MessageBox.Show("请选择在""项目信息""表中的核准单位名称!") End If End If
|
||||
-- 作者:有点甜 -- 发布时间:2018/10/21 22:36:00 -- Dim dr As DataRow = e.DataRow \'\'=============累计计算================ Dim drs As List(of DataRow) = e.DataTable.Select("", "项目编号,[_Identify]") \'注意排序参数 |
||||
-- 作者:ZJZK2018 -- 发布时间:2018/10/21 23:10:00 -- 老师还是出错,一旦输入数据就闪关。 |
||||
-- 作者:有点甜 -- 发布时间:2018/10/21 23:18:00 -- 认认真真看,直接拷贝2楼代码。 |