以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  属性错误,这种一般怎么解决?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=143449)

--  作者:wukang
--  发布时间:2019/11/25 14:24:00
--  属性错误,这种一般怎么解决?
属性错误,这种一般怎么解决?一般是什么原因造成的报错?
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20191125142304.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/11/25 14:52:00
--  
这个是把空字符串转换为双精度小数,就出错了,类似运行这种代码

Dim s As String = ""
Dim d As Double = s

--  作者:wukang
--  发布时间:2019/11/25 15:14:00
--  
我是卸载datacalchanged里面的,有个列,我直接从文本型修改属性,转为双精度小数了,这个要怎么解除这个报错?
--  作者:有点蓝
--  发布时间:2019/11/25 15:29:00
--  
写了什么代码,完整贴出来
--  作者:wukang
--  发布时间:2019/11/25 16:01:00
--  
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_剩余风险_剩余风险分值","内部审计年度风险评估调查表_固有风险_分值","内部审计年度风险评估调查表_控制水平_控制水平系数"
       If dr.IsNull("内部审计年度风险评估调查表_固有风险_影响程度") OrElse dr.IsNull("内部审计年度风险评估调查表_固有风险_可能性")
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") =Nothing
        Else
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") = dr("内部审计年度风险评估调查表_固有风险_分值")*dr("内部审计年度风险评估调查表_控制水平_控制水平系数")
        End If
End Select


Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_审计风险关注度_总分"
        If dr.IsNull("内部审计年度风险评估调查表_固有风险_影响程度") OrElse dr.IsNull("内部审计年度风险评估调查表_固有风险_可能性")
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") =Nothing
        Else
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") = dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计时间分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计结果分值")+dr("内部审计年度风险评估调查表_战略默契度_战略默契度打分")+dr("内部审计年度风险评估调查表_管理层或专业部门需求_分值")
        End If
End Select

--  作者:wukang
--  发布时间:2019/11/25 16:15:00
--  
就是以下代码,不知道为啥会报错的。。。。
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_剩余风险_剩余风险分值","内部审计年度风险评估调查表_固有风险_分值","内部审计年度风险评估调查表_控制水平_控制水平系数"
       If dr.IsNull("内部审计年度风险评估调查表_固有风险_影响程度") OrElse dr.IsNull("内部审计年度风险评估调查表_固有风险_可能性")
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") =Nothing
        Else
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") = dr("内部审计年度风险评估调查表_固有风险_分值")*dr("内部审计年度风险评估调查表_控制水平_控制水平系数")
        End If
End Select


Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_审计风险关注度_总分"
        If dr.IsNull("内部审计年度风险评估调查表_固有风险_影响程度") OrElse dr.IsNull("内部审计年度风险评估调查表_固有风险_可能性")
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") =Nothing
        Else
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") = dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计时间分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计结果分值")+dr("内部审计年度风险评估调查表_战略默契度_战略默契度打分")+dr("内部审计年度风险评估调查表_管理层或专业部门需求_分值")
        End If
End Select

--  作者:有点蓝
--  发布时间:2019/11/25 16:26:00
--  
dr("内部审计年度风险评估调查表_固有风险_分值")*dr("内部审计年度风险评估调查表_控制水平_控制水平系数")

dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计时间分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计结果分值")+dr("内部审计年度风险评估调查表_战略默契度_战略默契度打分")+dr("内部审计年度风险评估调查表_管理层或专业部门需求_分值")

这些列有字符列?

方法1、全部改为双精度列
2、字符列全部这样改改这样
val(dr("内部审计年度风险评估调查表_固有风险_分值")) * val(dr("内部审计年度风险评估调查表_控制水平_控制水平系数"))


--  作者:wukang
--  发布时间:2019/11/25 16:27:00
--  
好的,我试试,有些事双精度小数列,一些是整数列,我先试一下
--  作者:有点蓝
--  发布时间:2019/11/25 16:37:00
--  
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_固有风险_分值","内部审计年度风险评估调查表_控制水平_控制水平系数"
       If dr.IsNull("内部审计年度风险评估调查表_固有风险_影响程度") OrElse dr.IsNull("内部审计年度风险评估调查表_固有风险_可能性")
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") =Nothing
        Else
            dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值") = dr("内部审计年度风险评估调查表_固有风险_分值")*dr("内部审计年度风险评估调查表_控制水平_控制水平系数")
        End If
End Select


Select Case e.DataCol.name
    Case "内部审计年度风险评估调查表_剩余风险_剩余风险分值","内部审计年度风险评估调查表_内审监督情况_上次审计时间分值""内部审计年度风险评估调查表_内审监督情况_上次审计结果分值""内部审计年度风险评估调查表_战略默契度_战略默契度打分","内部审计年度风险评估调查表_管理层或专业部门需求_分值"
        If dr.IsNull("内部审计年度风险评估调查表_剩余风险_剩余风险分值") OrElse dr.IsNull("内部审计年度风险评估调查表_内审监督情况_上次审计时间分值") OrElse 其它几个列的判断自己补充完整
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") =Nothing
        Else
            dr("内部审计年度风险评估调查表_审计风险关注度_总分") = dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计时间分值")+dr("内部审计年度风险评估调查表_内审监督情况_上次审计结果分值")+dr("内部审计年度风险评估调查表_战略默契度_战略默契度打分")+dr("内部审计年度风险评估调查表_管理层或专业部门需求_分值")
        End If
End Select

--  作者:wukang
--  发布时间:2019/11/25 16:40:00
--  
可以了,解决了,是有一列存在文本型列导致的。另外有个问题请教一下:我在执行以下代码的时候,出现了下面这个错误提示,是什么意思?
执行的代码:
DataTables("风险评估调查表").DataCols("内部审计年度风险评估调查表_剩余风险_剩余风险分值2").Expression = ""
For Each dr As DataRow In DataTables("风险评估调查表").DataRows
    dr("内部审计年度风险评估调查表_剩余风险_剩余风险分值2") = dr("内部审计年度风险评估调查表_固有风险_固有风险分值计算") * dr("内部审计年度风险评估调查表_控制水平_控制水平系数")
Next
DataTables("风险评估调查表").DataCols("内部审计年度风险评估调查表_剩余风险_剩余风险分值2").Expression = "Parent.内部审计年度风险评估调查表_剩余风险_剩余风险分值2"





代码执行出错,错误信息:
System.IndexOutOfRangeException:无法找到关系0。
System.Data.DataRelationCollection.Data TableRelationCollection.
get Item(Int32 index)
在System.Data.LookupNode.Bind(DataTable table,List\'1 list)
在System.Data.DataExpression.Bind(Data Table table)
在System.Data.DataExpression.ctor(DataTable table,String expression,Type type)
在System.Data.DataColumn.set_Expression(String value)
在Foxtable.DataCol.set_Expression(String value)
在UserCode.Test0