以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  代码不执行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=174236)

--  作者:lgz518
--  发布时间:2022/1/6 15:51:00
--  代码不执行
下面代码,不执行,如何解决?

Select Case e.DataCol.Name
    Case  "G1","G2","G3","G4","G5","G6","G7","G8","G9","G10"
        e.DataRow("产品1")  = e.DataRow("GX1")/ e.DataRow("G1")
        e.DataRow("产品2")  = (e.DataRow("GX2"))/ (e.DataRow("G2"))
        e.DataRow("产品3")  = (e.DataRow("GX3"))/ (e.DataRow("G3"))
        e.DataRow("产品4")  = (e.DataRow("GX4"))/ (e.DataRow("G4"))
        e.DataRow("产品5")  = (e.DataRow("GX5"))/ (e.DataRow("G5"))
        e.DataRow("产品6")  = (e.DataRow("GX6"))/ (e.DataRow("G6"))
        e.DataRow("产品7")  = (e.DataRow("GX7"))/ (e.DataRow("G7"))
        e.DataRow("产品8")  = (e.DataRow("GX8"))/ (e.DataRow("G8"))
        e.DataRow("产品9")  = (e.DataRow("GX9"))/ (e.DataRow("G9"))
        e.DataRow("产品10")  = (e.DataRow("GX10"))/ (e.DataRow("G10"))               
        
End Select

--  作者:lgz518
--  发布时间:2022/1/6 16:11:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.12.30.1
错误所在事件:表,过程审核主表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Double”的转换无效。
输入字符串的格式不正确。

--  作者:有点蓝
--  发布时间:2022/1/6 16:17:00
--  
这些都必须是数值列,不能是字符列
--  作者:z769036165
--  发布时间:2022/1/6 16:26:00
--  
Dim i As Integer
Select Case e.DataCol.Name
    Case  "G1","G2","G3","G4","G5","G6","G7","G8","G9","G10"
        i = e.DataCol.Name.Replace("G","")
        If val(e.DataRow(e.DataCol.Name)) = 0 Then
            e.DataRow("产品" & i) = 0
        Else
            e.DataRow("产品" & i)  = val(e.DataRow("GX" & i))/ val(e.DataRow(e.DataCol.Name))
        End If
End Select
[此贴子已经被作者于2022/1/6 16:35:42编辑过]

--  作者:lgz518
--  发布时间:2022/1/6 16:30:00
--  
按下面进行转换,提示“未知错误码”
e.DataRow("产品1")  = e.DataRow("GX1")/(e.DataRow(Double("G1")))


注:

--  作者:有点蓝
--  发布时间:2022/1/6 16:34:00
--  
多了个括号
--  作者:lgz518
--  发布时间:2022/1/6 16:45:00
--  
e.DataRow("产品1")  = e.DataRow("GX1")/e.DataRow(Double("G1")),这个也报错,未知错误码
--  作者:lgz518
--  发布时间:2022/1/6 16:50:00
--  
e.DataRow("产品1")  = e.DataRow("GX1")/e.DataRow(Double("G1")),
e.DataRow("产品1") 是单精小数,e.DataRow("GX1")是整数,e.DataRow("G1"):字符

需求是
e.DataRow("产品1") 平均数为15 = e.DataRow("GX1")为总数量150      /e.DataRow(Double("G1"))为10条记录


--  作者:有点蓝
--  发布时间:2022/1/6 17:03:00
--  
e.DataRow("产品1")  = e.DataRow("GX1")/val(e.DataRow("G1"))

--  作者:程兴刚
--  发布时间:2022/1/6 17:04:00
--  
还要出错的,0不能作除数,应该这样:
Dim cnm As String
Dim g As Double
Select Case e.DataCol.Name
    Case  "G1","G2","G3","G4","G5","G6","G7","G8","G9","G10"
        g = val(e.DataRow(e.DataCol.Name))
        If g = 0
            e.DataRow(cnm.Replace("G","产品") = 0
        Else
            e.DataRow(cnm.Replace("G","产品") = e.DataRow(cnm.Replace("G","GX")/g      
        End If
End Select

这样才能完全避免做除数的列没有内容时不会报错。

[此贴子已经被作者于2022/1/6 17:28:56编辑过]