以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于自动清除  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65834)

--  作者:爱相随
--  发布时间:2015/3/24 10:43:00
--  关于自动清除

老师,我的项目需要几项目处理,请指导帮助

 

1、我的每张表都有一逻辑列“选择行”,然后有个窗口对表的内容进行筛选,菜单中有按钮“全选”“全销”,我要求,如果我通过筛选后显示的数据记录,点按钮“全选”或“全销”按钮,则“选择行”列应当只是筛选出来的记录进行变化,而不是所有的记录都全部勾上或销除。现在是无论是否筛选,这两个按钮都是操作全部记录。

2、选择行的状态我要求无论是谁进行了操作,当他退出后,选择行的状态全部变为未勾选的状态。

 

请问老师,上面的功能怎样实现呢?谢谢老师


--  作者:狐狸爸爸
--  发布时间:2015/3/24 10:50:00
--  

看一下:

http://www.foxtable.com/help/topics/0363.htm

http://www.foxtable.com/help/topics/1586.htm

http://www.foxtable.com/help/topics/1467.htm

 

正如帮助所言,对筛选出的行进行操作,那么就遍历Table就行,例如选择所有行。

 

For Each r As Row in Tables("订单").Rows
    r("选择行
"
) = True
Next

 

 

你要撤销勾选:

 

 

For Each r As Row in Tables("订单").Rows
    r("选择行
"
) = False
Next

 

这个选择行最好用表达式列,这样不占用存储空间,退出的时候,也不会保存状态,提醒:表达式列并非一定要设置表达式,没有设置表达式的表达式列,一样可以输入数据,只是不能存储


--  作者:爱相随
--  发布时间:2015/3/24 11:25:00
--  
以下是引用狐狸爸爸在2015/3/24 10:50:00的发言:

看一下:

http://www.foxtable.com/help/topics/0363.htm

http://www.foxtable.com/help/topics/1586.htm

http://www.foxtable.com/help/topics/1467.htm

 

正如帮助所言,对筛选出的行进行操作,那么就遍历Table就行,例如选择所有行。

 

For Each r As Row in Tables("订单").Rows
    r("选择行
"
) = True
Next

 

 

你要撤销勾选:

 

 

For Each r As Row in Tables("订单").Rows
    r("选择行
"
) = False
Next

 

这个选择行最好用表达式列,这样不占用存储空间,退出的时候,也不会保存状态,提醒:表达式列并非一定要设置表达式,没有设置表达式的表达式列,一样可以输入数据,只是不能存储

老师,我要达到的目的就是当筛选后,点击“全选”时,点选择中的就只是筛选出来的行,如果没有筛选出来的行,则不会被选择。

[此贴子已经被作者于2015/3/24 11:29:54编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/3/24 11:31:00
--  

呵呵,我给的代码没有错,全选筛选出的行的代码就是:
 
For Each r As Row in Tables("表名").Rows
    r("选择行") = True
Next
 


 


--  作者:爱相随
--  发布时间:2015/3/24 11:42:00
--  
以下是引用狐狸爸爸在2015/3/24 11:31:00的发言:

呵呵,我给的代码没有错,全选筛选出的行的代码就是:
 
For Each r As Row in Tables("表名").Rows
    r("选择行") = True
Next
 


 

但这个“全选”“全销”按钮是在菜单里的,适用全部表,并不是只定哪个表可以操作


--  作者:爱相随
--  发布时间:2015/3/24 11:46:00
--  

以前用的代码是:CurrentTable.DataTable.replacefor("XZH",True,"")

但它不能按筛选的结果选中,而是无论是否筛选,它都全选


--  作者:逛逛
--  发布时间:2015/3/24 12:01:00
--  

那你可以套用狐爸的代码,改一下啊

 

For Each r As Row in CurrentTable.Rows
    r("选择行
"
) = False
Next

 

 

虽然用CurrentTable不太严谨,但在特殊情况下还是能用

别忘了判断一下 列是否存在

 


--  作者:狐狸爸爸
--  发布时间:2015/3/24 12:13:00
--  
以下是引用爱相随在2015/3/24 11:46:00的发言:

以前用的代码是:CurrentTable.DataTable.replacefor("XZH",True,"")

但它不能按筛选的结果选中,而是无论是否筛选,它都全选

 

呵呵,提问的时候,一开始就贴出你按钮的代码并说明问题,会更快捷地得到帮助,不要只说我不行,却不提供代码

 

改为:

 

Tables("表名").DataTable.replacefor("XZH",True,Tables("表名").Filter)

 

Table为啥只显示部分行,因为筛选了,为什么筛选,因为设置了他的Filter属性。

 

记得回头看一下我贴给你的帮助,知道Table和dataTable的区别,这很重要。

 

 


--  作者:爱相随
--  发布时间:2015/3/24 12:17:00
--  

谢谢老师,就是这个效果!!!


--  作者:狐狸爸爸
--  发布时间:2015/3/24 12:20:00
--  

不客气,还有,你应该知道: 二楼的方法也是可以的。

建议看一下:

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=65606

 

[此贴子已经被作者于2015/3/24 12:21:18编辑过]