以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  日期列 直接引用 出现 到类型“Long”的转换无效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80390)

--  作者:celchentao
--  发布时间:2016/1/21 18:20:00
--  日期列 直接引用 出现 到类型“Long”的转换无效
If e.DataCol.Name = "日期" Then
Dim rq As Date = dr("日期")

 dr("敏福_发货数量") = fh.Compute("Sum(发货数量)","发货日期 = \'" & rq & "\'"  And "发货单位 = \'敏福 \'")

.NET Framework 版本:2.0.50727.5483
Foxtable 版本:2015.12.22.1
错误所在事件:表,销售日报,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“发货日期 = \'2016-01-19\'”到类型“Long”的转换无效。
输入字符串的格式不正确。

求专家指点

--  作者:大红袍
--  发布时间:2016/1/21 18:21:00
--  
dr("敏福_发货数量") = fh.Compute("Sum(发货数量)","发货日期 = \'" & rq & "\' And 发货单位 = \'敏福\'")
--  作者:celchentao
--  发布时间:2016/1/21 18:24:00
--  非常感谢 原来是引号的问题
非常感谢 原来是引号的问题
--  作者:celchentao
--  发布时间:2016/1/21 18:36:00
--  
如果条件  日期   或者 发货单位 在记录表中不存在   此结果为空 如何返回 0
--  作者:大红袍
--  发布时间:2016/1/21 18:43:00
--  

dim d As Double = fh.Compute("Sum(发货数量)","发货日期 = #" & rq & "# And 发货单位 = \'敏福\'")

If d = nothing Then

    dr("敏福_发货数量") = 0

Else

    dr("敏福_发货数量") = d

End If


--  作者:celchentao
--  发布时间:2016/1/21 19:07:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:实例.jpg
图片点击可在新窗口打开查看
像这样的 后边还有几十列  每一列都判断的   有没有简便的方法 空的单元格全部 填充成0

--  作者:大红袍
--  发布时间:2016/1/21 20:40:00
--  

写成循环的方式

 

Dim cs1() As String = {"发货数量", "其它列名"}
Dim cs2() As String = {"敏福", "其它列名"}

For i As Integer = 0 To cs1.Length - 1
    Dim d As Double = fh.Compute("Sum(" & cs1(i) & ")","发货日期 = #" & rq & "# And 发货单位 = \'" & cs2(i) & "\'")
   
    If d = Nothing Then
        dr(cs1(i) & "_" & cs2(i)) = 0
    Else
        dr(cs1(i) & "_" & cs2(i)) = 0
    End If
Next


--  作者:大红袍
--  发布时间:2016/1/21 20:42:00
--  

你也可以这样写

 

Dim cs1() As String = {"发货数量", "其它列名"}

For Each c As String In cs1
    If e.DataRow.Isnull(c) ten
        e.DataRow(c) = 0
    End If
Next