以文本方式查看主题

-  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=185369)

--  作者:vvfree
--  发布时间:2023/2/20 1:58:00
--  [求助].FIND 使用查找对比是否同行某列为空无法排除相同
当使用.FIND 使用查找对比两表是否存在相同行,当行某列为空值时无法排除相同行的问题

如果所有列有值就可以对比排除不重复,但是只要有一列值为空就无法排除,重复添加,请问要如何解决?谢谢!

For Each dr1 As Row In Tables("查询打印_Table1").GetCheckedRows
    Dim t1 As DataTable = Tables("查询打印_Table2").DataTable
    
    Dim fdr As DataRow = t1.Find("[销货单号]  = \'" & dr1("销货单号") & "\'And [销货日期]  = \'" & dr1("销货日期") & "\'And[客户代号]  = \'" & dr1("客户代号") & "\'And[SST]  = \'" & dr1("SST") & "\'")

    If fdr Is Nothing Then 
        
        Dim dr3 As Row = Tables("查询打印_Table2").AddNew()
        For Each dc As Col In Tables("查询打印_Table2").Cols
            dr3(dc.name) = dr1(dc.name)
        Next 
    End If
Next

--  作者:有点蓝
--  发布时间:2023/2/20 8:38:00
--  
如果只有一个列空值,比较好处理

dim filter as string
if dr1.isnull("客户代号")
filter  = "[销货单号]  = \'" & dr1("销货单号") & "\'And [销货日期]  = \'" & dr1("销货日期") & "\'And[客户代号]  is null And[SST]  = \'" & dr1("SST") & "\'"
else
"[销货单号]  = \'" & dr1("销货单号") & "\'And [销货日期]  = \'" & dr1("销货日期") & "\'And[客户代号]  = \'" & dr1("客户代号") & "\'And[SST]  = \'" & dr1("SST") & "\'"
end if
Dim fdr As DataRow = t1.Find(filter  )

如果有多个列空值,就麻烦了,一个列为空,两个列为空,...,判断都要单独处理

--  作者:vvfree
--  发布时间:2023/2/20 11:18:00
--  回复:(有点蓝)如果只有一个列空值,比较好处理dim ...
会有多个为空的情况哦,但不会出现重复,但肯定的是某个值一定不相同,单会出现多个空值,