以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码咨询!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64343)

--  作者:wh420
--  发布时间:2015/2/11 15:54:00
--  代码咨询!

如何判断当FILTER定义的SQL语句找不到符合条件的记录时用MESSAGEBOX提示一遍?

 

If startdate.Value=Nothing OrElse enddate.value=Nothing Then
    Messagebox.Show("请选则起始日期或终止日期")
    Return
Else
    For Each dr As DataRow In dt2.SQLSelect("commitTime >=\'" & startdate.value & "\' and PromiseTimeString <=\'" & EndDate.value & "\'","","PNumber")
        Dim filter As String = "PreID like \'%" & dr("PNumber") & "\'"
        Dim fdr As DataRow = dt1.SQLFind(filter)
        If fdr Is Nothing Then
            Dim ndr As DataRow = dt3.AddNew
            ndr("项目编号") = dr("pNumber")
            ndr("客户名称") = dr("companyName")
        End If
    Next

End If

 

 


--  作者:Bin
--  发布时间:2015/2/11 16:00:00
--  
If fdr Is Nothing Then
            Dim ndr As DataRow = dt3.AddNew
            ndr("项目编号") = dr("pNumber")
            ndr("客户名称") = dr("companyName")
Else
  messagebox.show("没找到:" & dr("pNumber"))
        End If

--  作者:wh420
--  发布时间:2015/2/11 16:08:00
--  

还是不行,可能我没有表述清楚。上面的代码实现的功能是A表的PREID字段去B表的Pnumber字段搜索,如果A表中所有记录B表中都有,则MESSAGE提示,未搜索到则把未搜索到的记录罗列出来。

 

红字部分是我想要提示功能不知道加在哪合适,让其只提示一遍!

[此贴子已经被作者于2015/2/11 16:08:48编辑过]

--  作者:有点甜
--  发布时间:2015/2/11 16:15:00
--  
If startdate.Value=Nothing OrElse enddate.value=Nothing Then
    Messagebox.Show("请选则起始日期或终止日期")
    Return
Else
    Dim flag As Boolean = False
    For Each dr As DataRow In dt2.SQLSelect("commitTime >=\'" & startdate.value & "\' and PromiseTimeString <=\'" & EndDate.value & "\'","","PNumber")
        Dim filter As String = "PreID like \'%" & dr("PNumber") & "\'"
        Dim fdr As DataRow = dt1.SQLFind(filter)
        If fdr Is Nothing Then
            Dim ndr As DataRow = dt3.AddNew
            ndr("项目编号") = dr("pNumber")
            ndr("客户名称") = dr("companyName")
        Else If flag = False Then
            msgbox("有重复值")
            flag = True
        End If
    Next
   
End If

--  作者:wh420
--  发布时间:2015/2/11 16:22:00
--  
问题解决,多谢老师
--  作者:wh420
--  发布时间:2015/2/11 16:39:00
--  
刚刚测试出现一些问题,当A表中所有记录B表中都有,则MESSAGE提示这部分正常,当未搜索到则把未搜索到的记录罗列出来后也出现了这个MESSAGE提示。这是我不想要的
--  作者:有点甜
--  发布时间:2015/2/11 16:45:00
--  
 什么意思啊?只要有一条重复,就会提示啊。
[此贴子已经被作者于2015/2/11 16:45:42编辑过]

--  作者:wh420
--  发布时间:2015/2/11 16:52:00
--  

举个例子:

第一种情况:A表中三行记录ID列值为 001、 002、 003 B表中三行记录BID列值为001 、002、 003,A表去B表中找,都找到了则弹出提示“没有丢失的记录”

第二种情况:A表中三行记录ID列值为 001、 002、 003 B表中三行记录BID列值为001、002 、003,004 。B表中比A表多出了004,则把004这条记录列出来且不要任何提示。

您的代码第二种情况也出现了提示,不知道老师我说明白没?

[此贴子已经被作者于2015/2/11 16:53:33编辑过]

--  作者:有点甜
--  发布时间:2015/2/11 16:55:00
--  
If startdate.Value=Nothing OrElse enddate.value=Nothing Then
    Messagebox.Show("请选则起始日期或终止日期")
    Return
Else
    Dim flag As Boolean = False
    For Each dr As DataRow In dt2.SQLSelect("commitTime >=\'" & startdate.value & "\' and PromiseTimeString <=\'" & EndDate.value & "\'","","PNumber")
        Dim filter As String = "PreID like \'%" & dr("PNumber") & "\'"
        Dim fdr As DataRow = dt1.SQLFind(filter)
        If fdr Is Nothing Then
            Dim ndr As DataRow = dt3.AddNew
            ndr("项目编号") = dr("pNumber")
            ndr("客户名称") = dr("companyName")
            flag = True
        End If
    Next
    If flag = False Then
        msgbox("提示")
    End If
End If