Foxtable(狐表)用户栏目专家坐堂 → [求助]根据附表筛选子表数据,怎么筛选


  共有4948人关注过本帖树形打印复制链接

主题:[求助]根据附表筛选子表数据,怎么筛选

帅哥哟,离线,有人找我吗?
wuxianzuoji41
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
[求助]根据附表筛选子表数据,怎么筛选  发帖心情 Post By: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)


 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By: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,帮我看一下到底在这个筛选错在哪里


 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By:2013/12/24 11:55:00 [显示全部帖子]

以下是引用Bin在2013-12-24 11:44:00的发言:
你 下面的是筛选当前行的, 上面的是筛选所有父表行的, 能一样吗?

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
wuxianzuoji41
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:884 积分:7061 威望:0 精华:0 注册:2013/3/5 8:42:00
  发帖心情 Post By:2013/12/24 13:22:00 [显示全部帖子]

谢谢狐狸爸爸和BIN,终于找到问题了

不好意思,没法上数据,数据太大了而且是SQL SERVER

发现问题如下:

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()

 

当父表变动时候,相对应的合计子表的数据小于20条的时候的时候正常

 

当子表的数据大于20的时候的时候正常,只能显示出来20条子表数据,所以产生和SQL TABLE出来的统计的数据不一致的问题。

 

请问,当子表的数据大于20的时候的时候正常,只能显示出来20条子表数据这个是我在哪里设置了这个限制吗,也没找到

还是说就是这么设计的。

 

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

 回到顶部