以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  跨表引用是空值时显示0  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194541)

--  作者:g1j2h3
--  发布时间:2024/12/19 20:35:00
--  跨表引用是空值时显示0
请教大师,看代码错在哪里
接单明细datacolchanged中
If e.DataCol.Name = "产品名称" Then 
    e.DataRow("发货数量") = DataTables("发货明细").Compute("isnull(sum(发货数量),0)", "接单单号= \'" & e.DataRow("接单单号") & "\' And 产品名称=\'" & e.DataRow("产品名称") & "\' and 规格型号=\'" & e.DataRow("规格型号") & "\'")
End If
发货明细datacolchanged中
If e.DataCol.Name = "发货数量" Then
    Dim pr As DataRow
    pr = DataTables("接单明细").Find( "接单单号= \'" & e.DataRow("接单单号") & "\' And 产品名称=\'" & e.DataRow("产品名称") & "\' and 规格型号=\'" & e.DataRow("规格型号") & "\'")
    If pr IsNot Nothing Then
        DataTables("接单明细").DataCols("产品名称").RaiseDataColChanged(pr)
    End If
End If



出现错误提示

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2024.11.1.1
错误所在事件:表,接单明细, DataColChanged
详细错误信息:
调用的目标发生了异常。
无法计算。表达式“System.Data.FunctionNode”不是聚合。
[此贴子已经被作者于2024/12/19 20:36:12编辑过]

--  作者:有点蓝
--  发布时间:2024/12/19 20:51:00
--  
这里不需要判断是否为空

   e.DataRow("发货数量") = DataTables("发货明细").Compute("sum(发货数量)", "接单单号= \'" & e.DataRow("接单单号") & "\' And 产品名称=\'" & e.DataRow("产品名称") & "\' and 规格型号=\'" & e.DataRow("规格型号") & "\'")
--  作者:g1j2h3
--  发布时间:2024/12/19 21:02:00
--  
但我想让发货数量是空值时显示0,要参与计算,该怎么写啊
[此贴子已经被作者于2024/12/19 21:03:13编辑过]

--  作者:有点蓝
--  发布时间:2024/12/19 21:06:00
--  
If e.DataCol.Name = "产品名称" Then 
    dim a as double = DataTables("发货明细").Compute("sum(发货数量)", "接单单号= \'" & e.DataRow("接单单号") & "\' And 产品名称=\'" & e.DataRow("产品名称") & "\' and 规格型号=\'" & e.DataRow("规格型号") & "\'")
e.DataRow("发货数量") = a
End If