以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求关联筛选代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1292)

--  作者:blackzhu
--  发布时间:2008/12/1 17:04:00
--  求关联筛选代码
  我有一个两个表:A和B表
表中都有[订单号]和[口岸]两个字段,我想在A表中筛选订单号和口岸时,在B表中也同时将此订单号和口岸筛选出来。这个代码怎么写.在易表中可以做到的?
--  作者:狐狸爸爸
--  发布时间:2008/12/1 17:06:00
--  
自己设计按钮:

tables("表A").filter = 你的条件
tables("表B").filter =  tables("表B").filter
--  作者:blackzhu
--  发布时间:2008/12/1 17:46:00
--  
以下是引用狐狸爸爸在2008-12-1 17:06:00的发言:
自己设计按钮:

tables("表A").filter = 你的条件
tables("表B").filter =  tables("表B").filter

  做不起来!我的意思是做一窗口,做两个文本输入框,一个是订单号,一个是口岸,输入订单号和口岸后,做一个筛选按钮,按筛选按钮后将A表的符合订单号和口岸条件的筛选起来,同时B表中的符合这两个条件的也同时被筛选。


--  作者:blackzhu
--  发布时间:2008/12/1 18:00:00
--  
   关键是“=我的条件”不知道这么写?
--  作者:blackzhu
--  发布时间:2008/12/1 18:09:00
--  
Dim Filter As String
With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then
        Filter = "IO = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("cmbCustomer")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "口岸 = \'" & .Value & "\'"
    End If
End With
If Filter > "" Then
    Tables("装箱单").Filter = Filter
    tables("装箱统计").filter =  tables("装箱统计").filter
End If



  我的代码是这么写的。但筛选起来的结果不对:
 举个列子:我在A表中筛选EVG3397这个订单,口岸选择的是上海。但B表中选择出来的是ECG3397的天津口岸。(A表和B表全部有EVG3397这个订单,也全部有上海和天津这两个口岸)。

  这个代码有什么问题?
 

--  作者:ybil
--  发布时间:2008/12/1 18:25:00
--  

注:"DDH","KA"分别为"订单号"和"口岸"的输入框名


\'\'\'
Dim Ls As String() = {"DDH","KA","订单号","口岸"}
Dim Ft,Tc As String

For n As Integer = 0 to 1
     Tc = e.form.Controls(Ls(n)).Value
     if Tc > "" then        
         Ft = Ft & " And " & Ls(n+2) & " = \'" & Tc & "\'"          
     End If
Next

If Ft > "" Then
    Tables("A").Filter = Ft.SubString(5)
    Tables("B").Filter = Tables("A").Filter
End If


--  作者:blackzhu
--  发布时间:2008/12/2 9:45:00
--  
以下是引用ybil在2008-12-1 18:25:00的发言:

注:"DDH","KA"分别为"订单号"和"口岸"的输入框名


\'\'\'
Dim Ls As String() = {"DDH","KA","订单号","口岸"}
Dim Ft,Tc As String

For n As Integer = 0 to 1
     Tc = e.form.Controls(Ls(n)).Value
     if Tc > "" then        
         Ft = Ft & " And " & Ls(n+2) & " = \'" & Tc & "\'"          
     End If
Next

If Ft > "" Then
    Tables("A").Filter = Ft.SubString(5)
    Tables("B").Filter = Tables("A").Filter
End If

    谢谢!你的代码总是简单实用,虽说还是有一点看不太懂(老六的马马虎虎还行),但代码可以简化到这样,绝对值得我学习。希望可以有所收获。


--  作者:狐狸爸爸
--  发布时间:2008/12/2 10:22:00
--  
以下是引用blackzhu在2008-12-2 9:45:00的发言:

    谢谢!你的代码总是简单实用,虽说还是有一点看不太懂(老六的马马虎虎还行),但代码可以简化到这样,绝对值得我学习。希望可以有所收获。


哈哈,因为我是常人,YBIL是超人。


--  作者:ybil
--  发布时间:2008/12/2 10:27:00
--  
以下是引用狐狸爸爸在2008-12-2 10:22:00的发言:


哈哈,因为我是常人,YBIL是超人。

nnd,俺乃凡夫,何来超人!