以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于SQL统计空值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=83742)

--  作者:husl
--  发布时间:2016/4/15 16:51:00
--  [求助]关于SQL统计空值
Dim Sum As Single= DataTables("入库明细表").SQLCompute("Sum(入库重量)", "[品名] = \'" & R("品名") & "\' and [批号] = \'" & R("批号") & "\'  And [日期]= \'"& txt & "\' and [确认出入库]=1") 

老师好,请教下,SQL统计的话。如果 "[品名] = \'" & R("品名") & "\' and [批号] = \'" & R("批号") & "\'  其中有一列是空的话,为什么就统计不出来了。
是因为SQL的空值和 FOXtable 的空值不是同一类型吗?

该如何解决呢?

--  作者:大红袍
--  发布时间:2016/4/15 16:59:00
--  
Dim filter As String = "1=1"
If r.isnull("品名") = False Then
    filter &= " and 品名 = \'" & R("品名") & "\'"
End If
If r.isnull("批号") = False Then
    filter &= " and 批号 = \'" & R("批号") & "\'"
End If
msgbox(filter)
Dim Sum As Single= DataTables("入库明细表").SQLCompute("Sum(入库重量)", filter)

--  作者:husl
--  发布时间:2016/4/15 17:02:00
--  
 请教下 filter &= 是什么意思呢?
--  作者:大红袍
--  发布时间:2016/4/15 17:03:00
--  
 就是 filter = filter & "123456"
--  作者:husl
--  发布时间:2016/4/15 17:04:00
--  
好的。,谢谢老师!!
--  作者:husl
--  发布时间:2016/4/15 17:25:00
--  
…………老师好。。又来麻烦你了……我后面还有条件 And [日期]= \'"& txt & "\' and [确认出入库]=1"   是会变化的。如何将 “filter  And [日期]= \'"& txt & "\' and [确认出入库]=1" 套用起来呢?
   filter  And [日期]= \'"& txt & "\' and [确认出入库]=1"  说是AND后面非 布尔型 。。
如果重新定义 filter 的话。。这样代码会不会太繁琐重复了?

--  作者:大红袍
--  发布时间:2016/4/15 17:56:00
--  
Dim filter As String = "1=1"
If r.isnull("品名") = False Then
    filter &= " and 品名 = \'" & R("品名") & "\'"
End If
If r.isnull("批号") = False Then
    filter &= " and 批号 = \'" & R("批号") & "\'"
End If
filter = filter & " And [日期]= \'" & txt & "\' and [确认出入库]=1"
msgbox(filter)
Dim Sum As Single= DataTables("入库明细表").SQLCompute("Sum(入库重量)", filter)

--  作者:husl
--  发布时间:2016/4/15 17:57:00
--  
明白了。谢谢老师!学习了新的东西~