以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]根据附表筛选子表数据,怎么筛选  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44146)

--  作者:wuxianzuoji41
--  发布时间:2013/12/24 11:11:00
--  [求助]根据附表筛选子表数据,怎么筛选

current时间件里用下面2种方式,获得的结果不一样,谁帮我解决一下是哪个正确还是都不对

方式一、
If DataTables("crm_customer").DataRows.Count = 0 Then \'如果baidu_client表没有数据
    DataTables("crm_customer_track").LoadFilter = "track_id Is Null" \'不加载baidu_records
Else
    Dim ids As String
    For Each dr As DataRow In DataTables("crm_customer").DataRows
        ids = ids & "," & dr("customer_id")
    Next
    ids= ids.Trim(",")
    DataTables("crm_customer_track").LoadFilter = "customer_id In (" & ids & ")"
End If
DataTables("crm_customer_track").Load()


Dim t_genjin As Table = Tables("窗口客户_tbl_Genjin")
With Tables("窗口客户_tblKehu")
    If .Current Is Nothing Then
        t_genjin.filter="false"     
    Else
        t_genjin.Filter = "customer_id = " & .Current("customer_id")    
     End If
End With


二、sql TABLE方式
Dim aa2 As String="Select* from crm_customer_track where customer_id= " & Tables("窗口客户_tblKehu").Current("customer_id")
Tables("窗口客户_tblCeshi").Fill(aa2,"c2",True)


--  作者:Bin
--  发布时间:2013/12/24 11:13:00
--  
http://www.foxtable.com/help/topics/2228.htm  参考帮助,你第一个方式就没错.
--  作者:wuxianzuoji41
--  发布时间:2013/12/24 11:17:00
--  
以下是引用Bin在2013-12-24 11:13:00的发言:
http://www.foxtable.com/help/topics/2228.htm  参考帮助,你第一个方式就没错.

一、谢谢,找到问题了,2者结果一致,我的第一个方式可以吧数据调出来

但是在筛选的时候吧数据晒选掉了一部分

我这个地方错在哪里

Dim t_genjin As Table = Tables("窗口客户_tbl_Genjin")
With Tables("窗口客户_tblKehu")
    If .Current Is Nothing Then
        t_genjin.filter="false"     
    Else
        t_genjin.Filter = "customer_id = " & .Current("customer_id")    
     End If
End With

 

另外方式一和二哪个占用资源少,一方式编码有点麻烦比较多

[此贴子已经被作者于2013-12-24 11:22:03编辑过]

--  作者:wuxianzuoji41
--  发布时间:2013/12/24 11:33:00
--  
以下是引用wuxianzuoji41在2013-12-24 11:17:00的发言:

一、谢谢,找到问题了,2者结果一致,我的第一个方式可以吧数据调出来

但是在筛选的时候吧数据晒选掉了一部分

我这个地方错在哪里

Dim t_genjin As Table = Tables("窗口客户_tbl_Genjin")
With Tables("窗口客户_tblKehu")
    If .Current Is Nothing Then
        t_genjin.filter="false"     
    Else
        t_genjin.Filter = "customer_id = " & .Current("customer_id")    
     End If
End With

 

另外方式一和二哪个占用资源少,一方式编码有点麻烦比较多

[此贴子已经被作者于2013-12-24 11:22:03编辑过]

bin,帮我看一下到底在这个筛选错在哪里


--  作者:Bin
--  发布时间:2013/12/24 11:36:00
--  
如果ID是字符串列,需要加单引号

    t_genjin.Filter = "customer_id = \'" & .Current("customer_id")   & "\'"

--  作者:wuxianzuoji41
--  发布时间:2013/12/24 11:41:00
--  
以下是引用Bin在2013-12-24 11:36:00的发言:
如果ID是字符串列,需要加单引号

    t_genjin.Filter = "customer_id = \'" & .Current("customer_id")   & "\'"

是整型

 

这个地方提取出来子表是10条

If DataTables("crm_customer").DataRows.Count = 0 Then \'如果baidu_client表没有数据
    DataTables("crm_customer_track").LoadFilter = "track_id Is Null" \'不加载baidu_records
Else
    Dim ids As String
    For Each dr As DataRow In DataTables("crm_customer").DataRows
        ids = ids & "," & dr("customer_id")
    Next
    ids= ids.Trim(",")
    DataTables("crm_customer_track").LoadFilter = "customer_id In (" & ids & ")"
End If
DataTables("crm_customer_track").Load()

 

这个地方一筛选就变成2条
Dim t_genjin As Table = Tables("窗口客户_tbl_Genjin")
With Tables("窗口客户_tblKehu")
    If .Current Is Nothing Then
        t_genjin.filter="false"     
    Else
        t_genjin.Filter = "customer_id = " & .Current("customer_id")    
     End If
End With

[此贴子已经被作者于2013-12-24 11:42:30编辑过]

--  作者:Bin
--  发布时间:2013/12/24 11:44:00
--  
你 下面的是筛选当前行的, 上面的是筛选所有父表行的, 能一样吗?
--  作者:狐狸爸爸
--  发布时间:2013/12/24 11:53:00
--  
就是,第一段代码是筛选出父表所有行的子行,第二段代码是筛选出父表当前行的子行,肯定前者多得多嘛。
--  作者:wuxianzuoji41
--  发布时间:2013/12/24 11:55:00
--  
以下是引用Bin在2013-12-24 11:44:00的发言:
你 下面的是筛选当前行的, 上面的是筛选所有父表行的, 能一样吗?

我选的父表就一行做测试。就是父表只有一条记录的情况下。当前行就是所有的父表

[此贴子已经被作者于2013-12-24 11:55:33编辑过]

--  作者:Bin
--  发布时间:2013/12/24 11:59:00
--  
那就不会有问题,你是否没有把子表所有数据加载出来? 这样的话你筛选也不会全啊.

你上个例子看看你是怎么做的