Foxtable(狐表)用户栏目专家坐堂 → [求助]没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。


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

主题:[求助]没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。

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


加好友 发短信
等级:三尾狐 帖子:617 积分:5267 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。  发帖心情 Post By:2022/5/27 8:44:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.1.30.2
错误所在事件:表,预计总成本,DataColChanged
详细错误信息:
调用的目标发生了异常。
没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。


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

数据发生变化后报错,datachanged事件,事件代码如下:


'定义当前行  r
Dim r As Row = Tables("预计总成本").Current
Select Case e.DataCol.name
    Case "归类"
        MessageBox.Show("归类列发生变化")
        '如果归类变化,那么就是给三级目录执行归属的位置
        Dim new_code As String = e.NewValue
        Dim old_code As String = e.oldValue
        '判断新值.的位置,用于拆除一级目录
        Dim appare As Integer = new_code.IndexOf(".")
        Dim f_code As String = left(new_code,appare)
        r("目录编码") = e.NewValue & "."& r("序列号")
        Dim contents As List(of String) = DataTables("预计总成本").GetValues("目录编码")
        Dim f_r As DataRow = DataTables("一二级目录").Find("序号 = '"& new_code &"'")
        Dim f_name As String = f_r("一级目录")
        Dim s_name As String = f_r("二级目录")
        '判断是否存在指定的一级目录
        If contents.Contains(f_code) = False Then
            Tables("预计总成本").AddNew()
            Tables("预计总成本").Current("目录编码") = f_code
            Tables("预计总成本").Current("目录") = f_name
            Tables("预计总成本").Current("标记") = "一级"
        End If
        '判断是否存在指定的二级目录
        If contents.Contains(new_code) = False Then
            Tables("预计总成本").AddNew()
            Tables("预计总成本").Current("目录编码") = new_code
            Tables("预计总成本").Current("目录") = s_name
            Tables("预计总成本").Current("标记") = "二级"
        End If
        
        
        
        '开启折叠模式
        MessageBox.Show("准备开启折叠模式")
        Dim st As New LayerTreeSetting
        st.PathCol = "目录编码"
        st.Separator = "."
        st.TreeCol  = "目录"
        st.SortCol = "目录编码"
        st.AggregateCols = {"合计_收入","合计_成本" ,"合计_盈亏"}
        st.UseStyle = True
        st.ExpandTo = -1
        Tables("预计总成本").ShowGridTree(st)
        '判断转移后,是否存在原目录(一级目录 二级目录)
        
        MessageBox.Show("折叠模式已开启")
        '为空时删除未设置
    Case "合计_收入" , "合计_成本" , "工程量_数量" ,"口径工程量"
        
        If r("标记") = "三级" Then
            
            MessageBox.Show("三级目录行数据发生变化")
            Dim p_r As Row = r.parent '父行
            Dim g_r As Row = p_r.parent '爷行
            
            If r("工程量_数量") <> 0 Then
                r("单价_收入") = r("合计_收入")  / r("工程量_数量")
                r("单价_成本") = r("合计_成本")  / r("工程量_数量")
                r("单价_盈亏") = r("单价_收入") - r("单价_成本")
            End If
            
            If p_r("工程量_数量") <> 0 Then
                p_r("单价_收入") = p_r.getvalue("合计_收入")  / p_r("工程量_数量")
                p_r("单价_成本") = p_r.getvalue("合计_成本")  / p_r("工程量_数量")
                p_r("单价_盈亏") = p_r.getvalue("合计_盈亏")  / p_r("工程量_数量")
            End If
            
            
            
            If r("口径工程量") <> 0 Then
                r("平米_收入") = r("合计_收入")  / r("口径工程量")
                r("平米_成本") = r("合计_成本")  / r("口径工程量")
                r("平米_盈亏") = r("平米_收入") - r("平米_成本")
                r("工程量_含量") = r("工程量_数量") / r("口径工程量")
            End If
            
            If p_r("口径工程量") <> 0 Then
                p_r("平米_收入") = p_r.getvalue("合计_收入")  / p_r("口径工程量")
                p_r("平米_成本") = p_r.getvalue("合计_成本")  / p_r("口径工程量")
                p_r("平米_盈亏") = p_r.getvalue("合计_盈亏")  / p_r("口径工程量")
                p_r("工程量_含量") =  p_r("工程量_数量") / p_r("口径工程量")
            End If
            
            If g_r("口径工程量") <> 0 Then
                g_r("平米_收入") = g_r.getvalue("合计_收入")  / g_r("口径工程量")
                g_r("平米_成本") = g_r.getvalue("合计_成本")  / g_r("口径工程量")
                g_r("平米_盈亏") = g_r.getvalue("合计_盈亏")  / g_r("口径工程量")
                
            End If
            
            
            
            
        ElseIf r("标记") = "二级" Then
            MessageBox.Show("二级目录行发生变化")
            If r("工程量_数量") <> 0 Then
                r("单价_收入") = r.getvalue("合计_收入")  / r("工程量_数量")
                r("单价_成本") = r.getvalue("合计_成本")  / r("工程量_数量")
                r("单价_盈亏") = r.getvalue("合计_盈亏") / r("工程量_数量")
            End If
            
            If r("口径工程量") <> 0 Then
                r("平米_收入") = r.getvalue("合计_收入")  / r("口径工程量")
                r("平米_成本") = r.getvalue("合计_成本")  / r("口径工程量")
                r("平米_盈亏") = r.getvalue("合计_盈亏") / r("口径工程量")
                r("工程量_含量") = r("工程量_数量") / r("口径工程量")
            End If
            
        ElseIf r("标记") = "一级" Then
            MessageBox.Show("一级目录行发生变化")
            If r("口径工程量") <> 0 Then
                r("平米_收入") = r.getvalue("合计_收入")  / r("口径工程量")
                r("平米_成本") = r.getvalue("合计_成本")  / r("口径工程量")
                r("平米_盈亏") = r.getvalue("合计_盈亏") / r("口径工程量")
            End If
            
            
        End If
        
    Case "计算口径"
        MessageBox.Show("计算口径发生变化")
        Dim k_r As DataRow = DataTables("计算口径").find("[计算口径] = '"& e.NewValue &"'   ")
        If k_r IsNot Nothing Then
            
            r("口径工程量") = K_r("工程量")
        End If
        
        
        
    Case "工程量_计"
        MessageBox.Show("对号选择发生变化")
        Dim t As Row = Tables("预计总成本").Current
        Dim now_code As String = t("归类")
        Dim t_r As Row = t.parent
        t_r("工程量_数量") = DataTables("预计总成本").Compute("sum(工程量_数量)", "归类 = '"& now_code &"'  and 工程量_计 = true "  )
        
        
        
        
        
        
        
End Select
[此贴子已经被作者于2022/5/27 8:45:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

调试看那一句代码出错

加一个判断
If r.isnull("工程量_数量")=false andalso r("工程量_数量") <> 0 Then

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


加好友 发短信
等级:三尾狐 帖子:617 积分:5267 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]找到原因了,但不知如何解决  发帖心情 Post By:2022/5/27 9:14:00 [只看该作者]

找到原因了,但不知道如何解决

出错问题描述
软件设计思路:

1:我需要整理清单到预计总成本表,这些清单刚进预计总成本表时,我统一给他们的编码时16.1 ,此为未归类部分;而后,我需要给他们重新选择归类的目录,选择后,他们得到自己新的编码,根据新编码生成新的折叠模式

2:问题就出在折叠模式,如果归类全部完成,我退出软件,重新进入时,不再为他们归类,也就不再生成新的折叠模式,这时候,数据变化时,有些行就找不到父行了,出错就在与此

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

请上传实例说明

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


加好友 发短信
等级:三尾狐 帖子:617 积分:5267 威望:0 精华:0 注册:2022/4/4 14:42:00
回复:(有点蓝)请上传实例说明  发帖心情 Post By:2022/5/27 9:48:00 [只看该作者]

非常感谢,已经解决

 回到顶部