以文本方式查看主题

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

--  作者:lgj716330
--  发布时间:2019/9/7 10:03:00
--  [求助]统计空值
在项目事件的MainTableChanged里有下面这一代码

Dim Count As Integer
Count = DataTables("申请表").Compute("Count(开票人)","开票日期 is null")
Output.Show(Count)

显示值为0,如果改为is not null,显示值是2是正确的,问题在哪呢

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190907100105.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/9/7 10:12:00
--  
1楼代码放到命令窗口执行有没有问题?

选中这一行,命令窗口执行
Output.Show(Tables("申请表").current.isnull("开票日期"))
Output.Show(Tables("申请表").current("开票日期"))

--  作者:lgj716330
--  发布时间:2019/9/7 10:33:00
--  
1楼代码就是放在命令窗口测试的,用开票人列也是一样的结果
Output.Show(Tables("申请表").current.isnull("开票日期")),显示结果是true
Output.Show(Tables("申请表").current("开票日期")),显示结果是00:00:00
[此贴子已经被作者于2019/9/7 10:35:03编辑过]

--  作者:lgj716330
--  发布时间:2019/9/7 10:42:00
--  
表中相关事件的代码如下

PrepareEdit

e.cancel = True

DataColChanged

If e.DataCol.Name = "客户名称" Then

    If e.NewValue Is Nothing Then

        e.DataRow("客户编号") = Nothing

        e.DataRow("开票单位名称") = Nothing

    Else

        Dim dr As DataRow

        dr = DataTables("客户档案").Find("[客户名称] = \'" & e.NewValue & "\'")

        If dr IsNot Nothing

            e.DataRow("客户编号") = dr("客户编号")

            e.DataRow("开票单位名称") = dr("开票单位名称")

            e.DataRow("申请日期") = Date.Today

            e.DataRow("申请人") = user.name

        End If

    End If

End If

DataRowAdding

e.DataRow("编辑者") = User.name

BeforeDeleteDataRow

If  e.DataRow("审核") <>"" Then

    MessageBox.Show("单据已经审核,不能删除!", "提示")

    e.Cancel = True

End If


此主题相关图片如下:qq图片20190907104850.png
按此在新窗口浏览图片

[此贴子已经被作者于2019/9/7 10:49:19编辑过]

--  作者:有点蓝
--  发布时间:2019/9/7 11:08:00
--  
Dim Count As Integer
Count = DataTables("申请表").Compute("Count([_Identify]","开票日期 is null")
Output.Show(Count)

刚好开票人也是空值,所以计算没有结果