以文本方式查看主题

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

--  作者:whyxd
--  发布时间:2016/6/1 11:58:00
--  [求助]find空值

使用find查找的内容,有的时候可能是空值,这样系统会保存,大神请赐教。

例如:d = DataTables("销售明细单").Find("[产品名称] = \'" & Tables("销售任务").current("产品名称") & "\' and  [保质期] = \'" & Tables("销售任务").current("保质期") & "\'"),有的产品保质期是空值,这样执行的时候就会报错。


--  作者:大红袍
--  发布时间:2016/6/1 12:01:00
--  

Dim fdr As DataRow

If Tables("销售任务").current.IsNull("保质期") Then

    fdr = DataTables("销售明细单").Find("[产品名称] = \'" & Tables("销售任务").current("产品名称") & "\' and 保质期 is Null")

Else

    fdr = DataTables("销售明细单").Find("[产品名称] = \'" & Tables("销售任务").current("产品名称") & "\' and  [保质期] = \'" & Tables("销售任务").current("保质期") & "\'")

End If

 

If fdr IsNot Nothing Then

    msgbox("找到了")

End If

[此贴子已经被作者于2016/6/1 12:01:13编辑过]

--  作者:whyxd
--  发布时间:2016/6/1 12:06:00
--  

多谢老师,有一个问题就是,我实际上find的列有9个,其中有6个都有可能为空值,这样的话有没有更好的方法?


--  作者:大红袍
--  发布时间:2016/6/1 12:11:00
--  

Dim fdr As DataRow
Dim Filter As String = "1=1"
Dim r As Row = Tables("销售任务").current
Dim cs() As String = {"第一列", "第二列"}
for each c as string in cs
    If r.IsNull(c) Then
        filter &= " And " & c & " Is null"
    Else
        filter &= " and " & c & " = \'" & r(c) & "\'"
    End If
Next

msgbox(filter)