Foxtable(狐表)用户栏目专家坐堂 → [求助]删除行时报错,求大神帮助


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

主题:[求助]删除行时报错,求大神帮助

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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]删除行时报错,求大神帮助  发帖心情 Post By:2022/5/28 17:35:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.5.27.2
错误所在事件:表,预计总成本, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“收入”到类型“Double”的转换无效。
输入字符串的格式不正确。

删除table 表的行时,报错

错误所在事件:表,预计总成本, DataColChanged 代码如下:

If e.DataCol.name = "计算口径" Or e.DataCol.name = "口径工程量"
    Dim idx As Integer =  Tables("预计总成本").FindRow(e.DataRow)
    Dim r As Row = Tables("预计总成本").Rows(idx)
    Dim k_r As DataRow = DataTables("计算口径").find("[计算口径] = '"& e.NewValue &"'   ")
    If k_r IsNot Nothing Then
        r("口径工程量") = K_r("工程量")
    End If
    Dim c_r As DataRow =   DataTables("预计总成本").Find("标记 = '三级'")
    DataTables("预计总成本").DataCols("合计_收入").RaiseDataColChanged(c_r)
    
End If



If e.DataRow.IsNull("序列号") = False  Then
    Select e.DataCol.name
        Case "归类"
            Dim contents As List (of String) = DataTables("预计总成本").GetValues("目录编码")
            Dim i As Integer = Tables("预计总成本").FindRow(e.DataRow)
            Dim r As Row = Tables("预计总成本").rows(i)      '获取数据变动行
            r("目录编码") = e.NewValue & "." &  cstr(r("序列号"))
            r("标记") = "三级"
            Dim mm As List (Of DataRow) = DataTables("预计总成本").Select("[归类] = '" & e.NewValue & "'")
            r("顺序号") = mm.Count
            '解析目录编码
            Dim dot1 As Integer = e.NewValue.Indexof(".")
            Dim f_code As String = left(e.newvalue , Dot1)
            Dim f_r As DataRow = DataTables("一二级目录").find("序号 = '" & e.NewValue & "'")
            Dim f_name As String = f_r("一级目录")
            Dim s_name As String = f_r("二级目录")
            r("所属一级") = f_code
            If contents.Contains(f_code) = False Then
                '没有一级目录,增加一级目录
                Tables("预计总成本").AddNew()
                Dim p As Integer = Tables("预计总成本").Position
                Dim new_r As Row = Tables("预计总成本").Rows(p)
                new_r("目录编码") = f_code
                new_r("目录") = f_name
                new_r("标记") = "一级"
                new_r("顺序号") = CInt(f_code)
                End If
                
            If contents.Contains(e.NewValue) = False Then
                '没有二级目录,增加二级目录
                Tables("预计总成本").AddNew()
                Dim p As Integer = Tables("预计总成本").Position
                Dim new_r As Row = Tables("预计总成本").Rows(p)
                new_r("目录编码") = e.NewValue
                new_r("目录") = s_name
                new_r("标记") = "二级"
                new_r("顺序号") = CInt( CDbl(e.NewValue) * 100)
            End If
            '生成折叠模式
            Dim st As New LayerTreeSetting
                st.PathCol = "目录编码"
                st.Separator = "."
                st.TreeCol = "目录"
                st.SortCol = "顺序号"
                st.UseStyle = True
                st.ExpandTo = -1
                Tables("预计总成本").ShowGridTree(st)
            
            
            
            
            
            
            
            
        Case "合计_收入" , "合计_成本" ,"工程量_数量" ,"口径工程量" ,"工程量_计"
            '先设置三级目录行的计算公式
            Dim i As Integer = Tables("预计总成本").FindRow(e.DataRow)
            Dim r As Row = Tables("预计总成本").rows(i)
            r("合计_盈亏") = r("合计_收入") - r("合计_成本")
            If r("工程量_数量") <> 0 AndAlso r.IsNull("工程量_数量") = False Then
                r("单价_收入") = r("合计_收入") / r("工程量_数量")
                r("单价_成本") = r("合计_成本") / r("工程量_数量")
                r("单价_盈亏") = r("合计_盈亏") / r("工程量_数量")
            Else
                r("单价_收入") = Nothing
                r("单价_成本") = Nothing
                r("单价_盈亏") = Nothing
            End If
            
            If r("口径工程量") <> 0 AndAlso r.IsNull("口径工程量") = False Then
                r("平米_收入") = r("合计_收入") / r("口径工程量")
                r("平米_成本") = r("合计_成本") / r("口径工程量")
                r("平米_盈亏") = r("合计_盈亏") / r("口径工程量")
                r("工程量_含量") = r("工程量_数量") / r("口径工程量")
            Else
                r("平米_收入") = Nothing
                r("平米_成本") = Nothing
                r("平米_盈亏") = Nothing
                r("工程量_含量") = Nothing
            End If
            'Case "工程量_计"
                'MessageBox.Show("你好")
                'Dim i As Integer = Tables("预计总成本").FindRow(e.DataRow)
                'Dim r As Row = Tables("预计总成本").rows(i)
                '
                'Dim q_str As String = r("归类")
                'Dim up_r As DataRow = DataTables("预计总成本").Find("目录编码 = '"& q_str &"'"   )
                '
                'Dim Total_q As Double = DataTables("预计总成本").Compute("sum(工程量_数量)" ,"归类 = '"& q_str &"'" )
                'up_r("工程量_数量") = total_q
            'MessageBox.Show(total_q)
            
            
        Case "计算口径"
            Dim i As Integer = Tables("预计总成本").FindRow(e.DataRow)
            Dim r As Row = Tables("预计总成本").rows(i)
            Dim f_r As DataRow = DataTables("计算口径").Find("计算口径 = '"& e.NewValue &"'")
            If f_r IsNot Nothing Then
                r("口径工程量") =  f_r("工程量")
            End If
    End Select
    '遍历二级目录
    Dim drs As List (of DataRow) = DataTables("预计总成本").Select("标记 = '二级'")
    For Each dr As DataRow In drs
        ' MessageBox.Show("你好3")
        
        Dim code As String = dr("目录编码")
        dr("合计_收入") = DataTables("预计总成本").Compute("sum(合计_收入)" ,"归类 = '"& code &"'")
        dr("合计_成本") = DataTables("预计总成本").Compute("sum(合计_成本)" ,"归类 = '"& code &"'")
        dr("合计_盈亏") = dr("合计_收入")  - dr("合计_成本")
        'MessageBox.Show("你好4")
        
        
        
        
        Dim  m As Double  = DataTables("预计总成本").Compute("sum(工程量_数量)" ,"归类 = '"& code &"' and 工程量_计 = true  ")
        dr("工程量_数量") = m       
        
        'MessageBox.Show("你好5")
        'MessageBox.Show(m)
        If dr("工程量_数量") <> 0 AndAlso dr.IsNull("工程量_数量") = False Then
            dr("单价_收入") = dr("合计_收入") / dr("工程量_数量")
            dr("单价_成本") = dr("合计_成本") / dr("工程量_数量")
            dr("单价_盈亏") = dr("合计_盈亏") / dr("工程量_数量")
        Else
            dr("单价_收入") = Nothing
            dr("单价_成本") = Nothing
            dr("单价_盈亏") = Nothing
        End If
        If dr("口径工程量") <> 0 AndAlso dr.IsNull("口径工程量") =False
            dr("平米_收入") = dr("合计_收入") / dr("口径工程量")
            dr("平米_成本") = dr("合计_成本") / dr("口径工程量")
            dr("平米_盈亏") = dr("合计_盈亏") / dr("口径工程量")
            dr("工程量_含量") = dr("工程量_数量") / dr("口径工程量")
        Else
            dr("平米_收入") = Nothing
            dr("平米_成本") = Nothing
            dr("平米_盈亏") = Nothing
            dr("工程量_含量") = Nothing
        End If
    Next
    '遍历一级目录
    Dim dr1s As List (of DataRow) = DataTables("预计总成本").Select("标记 = '一级'")
    For Each dr1 As DataRow In dr1s
        Dim code1 As String = dr1("目录编码")
        dr1("合计_收入") = DataTables("预计总成本").Compute("sum(合计_收入)" ,"所属一级 = '"& code1 &"'")
        dr1("合计_成本") = DataTables("预计总成本").Compute("sum(合计_成本)" ,"所属一级 = '"& code1 &"'")
        dr1("合计_盈亏") = dr1("合计_收入")  - dr1("合计_成本")
        If dr1("口径工程量") <> 0 AndAlso dr1.IsNull("口径工程量") = False Then
            dr1("平米_收入") = dr1("合计_收入") / dr1("口径工程量")
            dr1("平米_成本") = dr1("合计_成本") / dr1("口径工程量")
            dr1("平米_盈亏") = dr1("合计_盈亏") / dr1("口径工程量")
        End If
    Next
    
    
    
    
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110792 积分:563898 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/29 19:56:00 [只看该作者]

调试看哪一句代码出错:http://www.foxtable.com/webhelp/topics/1485.htm

最后一段【'遍历二级目录'遍历一级目录】不适合放到表事件处理,这种代码放到窗口按钮还可以。

每个事件都有适用的场合,不是所有功能都能堆积到一个事件使用的。不然何必分那么多事件

 回到顶部