以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177571) |
-- 作者:moseser -- 发布时间:2022/5/27 8:44:00 -- [求助]没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。 .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2022.1.30.2 错误所在事件:表,预计总成本,DataColChanged 详细错误信息: 调用的目标发生了异常。 没有为 类型“DBNull” 和 类型“Double” 定义运算符“/”。 数据发生变化后报错,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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/5/27 8:49:00 -- 调试看那一句代码出错 加一个判断 If r.isnull("工程量_数量")=false andalso r("工程量_数量") <> 0 Then
|
-- 作者:moseser -- 发布时间:2022/5/27 9:14:00 -- [求助]找到原因了,但不知如何解决 找到原因了,但不知道如何解决 出错问题描述 软件设计思路: 1:我需要整理清单到预计总成本表,这些清单刚进预计总成本表时,我统一给他们的编码时16.1 ,此为未归类部分;而后,我需要给他们重新选择归类的目录,选择后,他们得到自己新的编码,根据新编码生成新的折叠模式 2:问题就出在折叠模式,如果归类全部完成,我退出软件,重新进入时,不再为他们归类,也就不再生成新的折叠模式,这时候,数据变化时,有些行就找不到父行了,出错就在与此
|
-- 作者:有点蓝 -- 发布时间:2022/5/27 9:31:00 -- 请上传实例说明 |
-- 作者:moseser -- 发布时间:2022/5/27 9:48:00 -- 回复:(有点蓝)请上传实例说明 非常感谢,已经解决 |