以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  设计筛选行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=91165)

--  作者:yangwenghd
--  发布时间:2016/9/30 19:29:00
--  设计筛选行
问问 如果设计一个按钮 筛选不重复怎么写代码啊?感谢 感谢 
比如 Table1绑定了表A
然后表A 姓名有很多  王二小 张小花 李小胖 王二小等等很多重复的
然后点击按钮后  Table1 就显示姓名列不重复的,而且是最后一行。
感谢 感谢 

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


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

[此贴子已经被作者于2016/9/30 20:02:57编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/10/1 8:03:00
--  
e.Form.Controls("Table1").Select()
e.Form.Controls("Table1").Table.Select(0,0)
Syscmd.Filter.HideSameValues()

--  作者:yangwenghd
--  发布时间:2016/10/1 8:26:00
--  
谢谢  筛选出来了,只是可以是被筛选的是最后一行吗(如果有相同的),如果没有相同的就显示该行。
比如有张山,李四 ,李四 就显示 张山,和最后一行的李四,感谢 感谢,  
同时第二列不等于0的不显示, 感谢 感谢 图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/1 8:55:11编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/10/1 8:59:00
--  

1、第二列改为整数列

2、代码:

 

If DataTables("表A").DataCols.Contains("tmp") = False Then
    DataTables("表A").DataCols.Add("tmp",Gettype(String),1)
    Tables("表A").cols("tmp").Visible = False
    Tables("窗口1_Table1").cols("tmp").Visible = False
End If
Dim drs As List(of DataRow) = DataTables("表A").Select("","姓名,第二列 desc")
drs(0)("tmp") = "0"
For i As Integer = 1 To  drs.count - 1
    If drs(i)("姓名") = drs(i-1)("姓名") Then
        drs(i)("tmp") = "1"
    Else
        drs(i)("tmp") = "0"
    End If
Next
Tables("窗口1_Table1").Filter = "tmp = \'0\'"

 

我基本上不认为编程是一个技术活,因为只要基础通了,一切都通了,A、B、C这样搭建起来即可。

还有别人给你写的代码,你要去理解,将其消化为自己的知识,这样别人对你的帮助,才有意义。

[此贴子已经被作者于2016/10/1 9:05:35编辑过]

--  作者:yangwenghd
--  发布时间:2016/10/1 10:15:00
--  
可以再改一下吗?改为 就是姓名最后一行是0的时候 和之前的相同的姓名都不显示
是这样的 ,其实还是设计了一个功能,这是一个流水账 ,当最后张山 最后一行 的第二列为0  点击按钮 姓名列为张山的都不显示。


--  作者:狐狸爸爸
--  发布时间:2016/10/1 10:18:00
--  
看不懂你在问什么。
--  作者:yangwenghd
--  发布时间:2016/10/1 10:24:00
--  
比如 
第一行 张山  2
第二行 李四  3
第三行 王麻子 6
第五行 李四   5
第六行 王麻子 0

就只是显示  张山 2、李四 5 (李四最后一行) 王麻子(王麻子所有不显示,因为王麻子的最后一行是0)
 感谢 感谢 


--  作者:狐狸爸爸
--  发布时间:2016/10/2 8:13:00
--  
If DataTables("表A").DataCols.Contains("tmp") = False Then
    DataTables("表A").DataCols.Add("tmp",Gettype(String),1)
    Tables("表A").cols("tmp").Visible = False
    Tables("窗口1_Table1").cols("tmp").Visible = False
End If
Dim drs As List(of DataRow) = DataTables("表A").Select("","姓名,第二列 desc")
drs(0)("tmp") = "0"
For i As Integer = 1 To  drs.count - 1
    If drs(i)("姓名") = drs(i-1)("姓名") Then
        drs(i)("tmp") = "1"
    Else
        drs(i)("tmp") = "0"
    End If
Next
Tables("窗口1_Table1").Filter = "tmp = \'0\' And 第二列 <> 0"
--  作者:yangwenghd
--  发布时间:2016/10/2 9:17:00
--  
前面都可以了,就是最后还是会显示,就是当姓名列出现0后 先判断后面还有没同这个姓名的,如果有 就显示最后一行,如果没有 就隐藏所有与这个姓名相同的行,感谢 感谢 
--  作者:yangwenghd
--  发布时间:2016/10/2 20:14:00
--  
能再帮忙看看吗 感谢 感谢