以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]调用目标发生了异常  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91101)

--  作者:铜豌豆之首
--  发布时间:2016/9/29 14:27:00
--  [求助]调用目标发生了异常
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:表,目标,DataColChanged
详细错误信息:
调用的目标发生了异常。
从类型“Integer”到类型“Date”的转换无效。

Dim dt As Date = e.newvalue
Dim d As Integer
Select e.DataCol.name
    Case ("日期")
        If dt = Nothing Then
            e.DataRow("分摊天数")= Nothing
        Else
            d = Date.DaysInMonth (dt.Year,dt.Month)-dt.Day
            e.DataRow("分摊天数")= d
        End If
End Select




--  作者:有点蓝
--  发布时间:2016/9/29 14:43:00
--  
代码不熟的严格按照帮助写,不要异想天开

Select e.DataCol.name
    Case ("日期")
        Dim dt As Date = e.newvalue
        If dt = Nothing Then
            e.DataRow("分摊天数")= Nothing
        Else
            
            Dim d As Integer
            d = Date.DaysInMonth (dt.Year,dt.Month)-dt.Day
            e.DataRow("分摊天数")= d
        End If
End Select

--  作者:铜豌豆之首
--  发布时间:2016/9/29 15:16:00
--  
老师变量不是提前在判断语句之前申明吗?此次怎么不可以

Dim dr As DataRow = e.DataRow 这里不是提前申明吗?
Select
Case e.DataCol.Name
   
Case "数量","单价","折扣"
       
If dr.IsNull("数量") OrElse dr.IsNull("单价") Then
            dr(
"金额") = Nothing
        Else

            dr(
"金额") = dr("数量") * dr("单价") * (1 - dr("折扣"))
       
End If
End
Select



--  作者:有点蓝
--  发布时间:2016/9/29 15:43:00
--  
要看场合e.DataRow是整行,e.newvalue是其中某列的值,放到前面可能是指任意列的值,不一定是日期