Foxtable(狐表)用户栏目专家坐堂 → 筛选符合条件的列


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

主题:筛选符合条件的列

美女呀,离线,留言给我吧!
漂亮美眉vszh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
筛选符合条件的列  发帖心情 Post By:2016/2/19 9:52:00 [只看该作者]

1.连续2个(未知数,也有可能是 连续3个)大于0.56的数据;

2.符合条件的列 找到后,用什么方法来获取这几列数?用隐藏试了下不行,用 

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("产品", GetType(String), 32)
dtb.AddDef("客户", GetType(String), 32)
dtb.AddDef("数量", GetType(Integer))
dtb.AddDef("金额", GetType(Double))
dtb.Build()
MainTable
= Tables("统计")

 

用这种方法不知道如何获取符合条件的列?求老师们帮助~~

 


此主题相关图片如下:筛选列.png
按此在新窗口浏览图片

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/2/19 9:54:00 [只看该作者]

''1.所有列设置隐藏
''2.定义变量,获取K值,并获取样本值
''3
Tables("管制图_Table3").Filter = "管制图编号 = '" & Tables("控制图主表").Current("管制图编号") & "'"

'n = 样本
Dim n As Integer = Tables("控制图主表").Current("样本容量")
Dim k1 As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim k As Integer = k1.value
Dim sz As Integer = Tables("控制图主表").Current("中心限CL")
For i2 As Integer = 3 To Tables("管制图_Table3").Cols.count - 1
Tables("管制图_Table3").Cols(i2).Visible = False
Next
'K = 最终筛选列数
'sz = 要对比的中心数值
'Dim n As Integer  '定义样本
'Dim k As Integer  '定义
Dim i As Integer  '符合条件数
Dim i3 As Integer
Dim i4 As Integer
Dim a As Integer
For a = 3 To n + 3
'i3 = a
  If Tables("管制图_Table3").rows(7)(a) > sz Then

   For i3 = a To a + k
    If Tables("管制图_Table3").rows(7)(i3) >= sz Then
     i = i + 1
     If i >= k Then
For i4 = a - i To a
Tables("管制图_Table3").Cols(i4).Visible = True
Next
     '符合条件隐藏
     End If
    End If
   i = 0
   Next
  End If
Next

 

这是我自己瞎写的,思路是先隐藏列,然后符合条件的列取消隐藏,但测试不成功,想不到用什么方法~~


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/19 9:56:00 [只看该作者]

上传具体实例,说明要做什么效果。

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/2/19 10:28:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

1.找批号列Xbar的行中,连续2个出现(未知数,也有可能是 连续3个)大于0.56的列数据;

2.生成一个临时表,接收这几列的符合条件的数据,符合条件的也是就上图中画红框内的两列数据

3.谢谢大红袍老师~~


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/19 10:43:00 [只看该作者]

你例子想说明什么啊?什么都没有啊。

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/2/19 10:53:00 [只看该作者]

以下是引用大红袍在2016/2/19 10:43:00的发言:
你例子想说明什么啊?什么都没有啊。

连续2次出现(未知数,也有可能是 连续3个)大于0.56的列数据;注意不是行,是列;


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/19 10:55:00 [只看该作者]

 你例子什么也没有。

 

 请做一个有数据例子,同时,做一个生成的效果。


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:8064 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2016/2/19 14:41:00 [只看该作者]

以下是引用大红袍在2016/2/19 10:55:00的发言:

 你例子什么也没有。

 

 请做一个有数据例子,同时,做一个生成的效果。


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

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

 需求就是查找符合条件的列,重新生成一个表,可以是临时表

1.找批号列Xbar的行中,连续2个出现(未知数,也有可能是 连续3个)大于0.56的列数据;

----这里只有‘样5’列和‘样6’列符合条件

麻烦了红袍老师~~2楼是我自己想出来的代码,用的是隐藏列,可是没能实现目标~~


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/20 0:49:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("编号", Gettype(String), 32)
dtb.AddDef("批次", Gettype(String), 32)

Dim idx As Integer = 1
Dim count As Integer = 0
Dim dt As DataTable = DataTables("数据源")
Dim fdr As DataRow = dt.Find("批次 = 'Xbar'")
For i As Integer = 1 To 25
    If val(fdr("样" & i)) > 0.56 Then
        count += 1
    Else
        If count >= 2 Then
            For j As Integer= idx To i-1
                dtb.AddDef("样" & j, Gettype(String))
            Next
        End If
        idx = i+1
        count = 0
    End If
Next
dtb.Build()

For i As Integer = 0 To dt.DataRows.Count-4
    If dt.DataRows(i).isnull("样1") = False Then
        Dim dr As DataRow = DataTables("统计").AddNew
        For Each dc As DataCol In DataTables("统计").datacols
            dr(dc.name) = dt.DataRows(i)(dc.name)
        Next
    End If
Next

MainTable= Tables("统计")


 回到顶部