Foxtable(狐表)用户栏目专家坐堂 → 复杂的筛选功能


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

主题:复杂的筛选功能

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


加好友 发短信
等级:九尾狐 帖子:2707 积分:18062 威望:0 精华:0 注册:2013/4/9 10:41:00
复杂的筛选功能  发帖心情 Post By:2017/9/7 17:13:00 [只看该作者]

如果项目流程相同的行没有一个已完成,这显示项目名称相同的所有行,然后在筛选出日期列有日期的行
相当于筛选出 项目流程 列内,相同的行 没有已完成 再对应项目名称所有的行,再筛选出 计划_开始日期列有日期的行。
换的理解就是,筛选出项目流程相同的是否有一行的状态列有已完成,把没有意见完成的相同项目名称相同的行,且日期列有日期的行筛选出来。
比如 项目流程列有很多相同的,如:项目流程a 项目流程a 项目流程a 项目流程b 项目流程b 项目流程b 项目流程c 项目流程c 项目流程c 先检查这些项目流程列 相同的再状态列有没 已完成的,比如项目流程a 相同的行 再状态列有一行是已经完成就不筛选,(或者不管)继续看项目流程b,如果项目流程b相同在状态列没有一个已完成,那么筛选出项目流程行所有相同的 且日期列有日期的。


其实这个确实很麻烦,是想筛选出项目名称下的项目流程是否没个都已经完成,如果完成不管。如果项目流程相同的没有一个已完成,则显示出同行 项目名称相同的所有行,再这里已经筛选的里面筛选出 计划_开始日期列 有日期的行,非常的麻烦,不知道能不能实现。

以这个为例,项目A的流程2 流程3在状态别都有已完成,就不管他,
再看项目B的流程1和流程2,流程1的状态有已完成,但是流程2的状态列没有已完成,则筛选出项目B所有在计划_开始有日期的行,可以这样筛选吗?后面的都这样筛选。确实太复杂了,感谢 感谢 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170907170946.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:筛选.table

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/7 19:50:00 [只看该作者]

Dim t As Table = Tables("计划表")
Dim str As String = t.DataTable.GetComboListString("项目名称", "状态 = '办理中'").replace("|", "','")
t.filter = "项目名称 in ('" & str & "') and 计划_开始日期 is not null"

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


加好友 发短信
等级:九尾狐 帖子:2707 积分:18062 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/9/8 11:18:00 [只看该作者]

可以筛选出 项目流程 列 相同的行的状态列没有已完成的行吗?
比如项目流程列 所有流程2有已完成就不显示,如果没有就显示 所有的流程2 相同的行,感谢 感谢 
[此贴子已经被作者于2017/9/8 11:18:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/8 13:37:00 [只看该作者]

Dim t As Table = Tables("计划表")
Dim ls  = t.DataTable.GetValues("项目名称|项目流程", "状态 = '办理中'")
Dim str As String = "'',"
For Each ary() As String In ls
    str &= "'" & ary(0) + ary(1) & "',"
Next
t.filter = "项目名称+项目流程 in (" & str.trim(",") & ")"

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


加好友 发短信
等级:九尾狐 帖子:2707 积分:18062 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/9/8 14:37:00 [只看该作者]

为什么还是排除不了 状态列 对于已完成,同时和 项目流程内容相同的行呢, 感谢 感谢 

Dim t As Table = Tables("计划表")
Dim ls  = t.DataTable.GetValues("项目名称|项目流程", "状态 <> '已完成'")
Dim str As String = "'',"
For Each ary() As String In ls
    str &= "'" & ary(0) + ary(1) & "',"
Next
t.filter = "项目名称+项目流程 in (" & str.trim(",") & ")"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/8 14:50:00 [只看该作者]

 我测试代码没问题。请截图说明需要的效果。

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


加好友 发短信
等级:九尾狐 帖子:2707 积分:18062 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/9/9 0:24:00 [只看该作者]

  其实思路很简单,检查项目流程是不是每个都完成了,完成了就不筛选,如果没有完成,就要筛选出这个项目流程的整个项目名称,在这个的基础上筛选有日期的。
就好比A(项目名称) 下面有123(项目流程),如果不管123 的任何有一个没有完成(已完成),都要显示出整个 项目名称,这个的基础上筛选出有时间的行。

所以 第一个方框有已完成(项目流程相同的行)不管(不筛选),第二个框相同,三个也是,项目流程相同的都有 已完成,
但是 第四框(项目流程相同的行)没有已经 已完成 ,那么 显示出项目名称相同的,再这个的基础上显示有时间的行,
那么 没有 已完成的框  是 4、5、6、7的框没有已完成,他们分别相同的 项目名称列是 项目B 课名A  ,再在已经筛选了的筛选有时间的 行
所以要筛选的就是第8、11、14、19、23、
虽然8行的方框有已完成,但是 项目B 流程2 没有完成,就要把相同的项目名称一起筛选出,在筛选有时间的行。


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170909000306.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/9/9 0:25:14编辑过]

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/9 8:49:00 [只看该作者]

Dim t As Table = Tables("计划表")
Dim ls  = t.DataTable.GetValues("项目名称|项目流程", "状态 = '已完成'")
Dim str As String = "'',"
For Each ary() As String In ls
    str &= "'" & ary(0) + ary(1) & "',"
Next
t.filter = "计划_开始日期 is not null and 项目名称+项目流程 not in (" & str.trim(",") & ")"

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


加好友 发短信
等级:九尾狐 帖子:2707 积分:18062 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/9/9 12:30:00 [只看该作者]

这个是什么原因呀?感谢感谢  

.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.6.12.1
错误所在事件:
详细错误信息:
无法在 System.Boolean 和 System.String 上执行“And”操作。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:筛选.table



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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/9 14:17:00 [只看该作者]

Dim t As Table = Tables("计划表")
Dim ls  = t.DataTable.GetValues("项目名称|项目流程", "状态 = '已完成'")
Dim str As String = "'',"
For Each ary() As String In ls
    str &= "'" & ary(0) + ary(1) & "',"
Next
t.filter = "计划_开始日期 is not null and (项目名称+项目流程) not in (" & str.trim(",") & ")"
[此贴子已经被作者于2017/9/9 14:18:53编辑过]

 回到顶部
总数 21 1 2 3 下一页