Foxtable(狐表)用户栏目专家坐堂 → 为什么重置二次才出现正确结果


  共有5221人关注过本帖平板打印复制链接

主题:为什么重置二次才出现正确结果

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


加好友 发短信
等级:婴狐 帖子:46 积分:496 威望:0 精华:0 注册:2012/8/21 21:47:00
为什么重置二次才出现正确结果  发帖心情 Post By:2013/6/2 21:59:00 [只看该作者]

'下面的代码为什么重置二次才出现正确结果

Select Case e.DataCol.Name
    Case "应分面积"
    Dim drr As  DataRow = e.DataRow
    drr("垂长累计") =( Math.Sqrt(2 * drr("累计面积") * drr("南北垂长") * (drr("北长_下底") - drr("南长_上底")) + drr("南长_上底") * drr("南长_上底") * drr("南北垂长") * drr("南北垂长") ) _
 - drr("南长_上底") * drr("南北垂长") ) / (drr("北长_下底") - drr("南长_上底"))
End Select

Select Case e.DataCol.Name
    Case "田块名称","南长_上底","北长_下底","南北垂长","应分面积"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [田块名称] = '" & mr("田块名称") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("累计面积") = mr("应分面积")
            mr("户分垂长") = mr("垂长累计")
            mr("实分面积") = mr("验证面积")
            mr("户分东长") = mr("东长累计")
            mr("户分西长") = mr("西长累计")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [田块名称] = '" & dr("田块名称") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("累计面积") = drs(i-1)("累计面积") + drs(i)("应分面积")
            drs(i)("户分垂长") = drs(i)("垂长累计") - drs(i-1)("垂长累计")
            drs(i)("实分面积") = drs(i)("验证面积") - drs(i-1)("验证面积")
            drs(i)("户分东长") = drs(i)("东长累计") - drs(i-1)("东长累计")
            drs(i)("户分西长") = drs(i)("西长累计") - drs(i-1)("西长累计")
        Next
        If e.DataCol.Name = "田块名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [田块名称] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[田块名称] = '" & e.OldValue & "'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("累计面积") = dr("应分面积")
                    dr("户分垂长") = dr("垂长累计")
                    dr("实分面积") = dr("验证面积")
                    dr("户分东长") = dr("东长累计")
                    dr("户分西长") = dr("西长累计")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [田块名称] = '" & dr("田块名称") & "'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("累计面积") = drs(i-1)("累计面积") + drs(i)("应分面积")  
                    drs(i)("户分垂长") = drs(i)("垂长累计") - drs(i-1)("垂长累计")
                    drs(i)("实分面积") = drs(i)("验证面积") - drs(i-1)("验证面积")
                    drs(i)("户分东长") = drs(i)("东长累计") - drs(i-1)("东长累计")
                    drs(i)("户分西长") = drs(i)("西长累计") - drs(i-1)("西长累计")
                Next
            End If
        End If
End Select


 回到顶部