以文本方式查看主题

-  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
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:累计.table




--  作者:有点甜
--  发布时间:2018/10/21 22:36: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
                systemready = False

                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
                systemready = True
        End Select
    Else
        MessageBox.Show("请选择在""项目信息""表中的核准单位名称!")
    End If
End If


--  作者:ZJZK2018
--  发布时间:2018/10/21 23:10:00
--  
老师还是出错,一旦输入数据就闪关。

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


--  作者:有点甜
--  发布时间:2018/10/21 23:18:00
--  
认认真真看,直接拷贝2楼代码。