Office中国论坛/Access中国论坛

标题: 求助!关于复选框 [打印本页]

作者: 大白菜小白菜    时间: 2015-1-28 20:39
标题: 求助!关于复选框
我只想通过复选框选定子窗体查询得到的数据,而我每次点击“清除”按钮刷新窗体时显示的是所有数据都被选定,这是为什么?各位老师、前辈有空帮我看看,谢谢你们!

作者: 大白菜小白菜    时间: 2015-1-28 20:40
我用的access13版
作者: tmtony    时间: 2015-1-28 21:39
家里电脑打不开。
作者: 大白菜小白菜    时间: 2015-1-28 21:43
tmtony 发表于 2015-1-28 21:39
家里电脑打不开。

还是要谢谢你!
作者: roych    时间: 2015-1-29 09:48
不上传附件了,把select 部分改改:
  1. Select Case ctl.ControlType
  2.             Case acTextBox '是文本框,要清空(注意,子窗体下面还有两个锁定的文本框不能赋值)
  3.                 If ctl.Locked = False Then ctl.Value = Null
  4.                
  5.             Case acComboBox
  6.                 ctl.Value = Null '是组合框,也要清空
  7.             Case acCheckBox
  8.                 If ctl.Value = True Then ctl.Value = False
  9.             '其它类型的控件不处理
  10.         
  11.         End Select
复制代码

作者: 大白菜小白菜    时间: 2015-1-30 00:09
roych 发表于 2015-1-29 09:48
不上传附件了,把select 部分改改:

前辈,按照您上述的改法,我还是无法得到我想要的结果。是不是AfterUpdate有问题,你能传下附件吗?谢谢你了!
作者: 站到终点站    时间: 2015-2-2 14:07
你子窗体的数据源是预先指定为一个SELECT语句:
SELECT [订单表查询].[ID], [订单表查询].[客户名称], [订单表查询].[物流单位], [订单表查询].[物流单号], [订单表查询].[交易金额], [订单表查询].[物流费用], [订单表查询].[结余货款], [订单表查询].[交易日期], [订单表查询].[账务类型], [订单表查询].[结账方式], [订单表查询].[审核], [订单表查询].[是否结算], [订单表查询].[项目], [订单表查询].[备注] FROM 订单表查询;

而你实现主窗体中的数据查询功能是是通过指定子窗体filter属性来实现的,当传递空字符串给filter属性时,就是不设置筛选,此时子窗体就是不进行筛选,所得到的数据记录就是记录源所有的数据。

你要实现点清除不显示任何数据,需要将空字符串时,其筛选条件设置成“1=0”,清除按钮单击事件中的以下部分修改成以下这样:
  1.     Me.订单表查询子窗体.Form.Filter = "1=0"
  2.     Me.订单表查询子窗体.Form.FilterOn = True
复制代码



作者: 大白菜小白菜    时间: 2015-2-2 22:25
站到终点站 发表于 2015-2-2 14:07
你子窗体的数据源是预先指定为一个SELECT语句:
SELECT [订单表查询]., [订单表查询].[客户名称], [订单表 ...

是我表达不好,让各位老师误解了,对不起。我的意思是(以以下图片为例子):例如我查询“客户名称”为“5”的记录,显示结果是两条。我想用复选框只选定这两条结果,但是我用”清除“按钮刷新窗体查看是否真的只选定两条记录时发现,其实所有记录都被选定了。我想得到的结果是复选框只选定了查询得到的两条记录。

作者: 大白菜小白菜    时间: 2015-2-2 22:52
大白菜小白菜 发表于 2015-2-2 22:25
是我表达不好,让各位老师误解了,对不起。我的意思是(以以下图片为例子):例如我查询“客户名称”为“5 ...

即刷新窗体后得到如图结果[attach]55571[/attach]

作者: 站到终点站    时间: 2015-2-3 15:15
这下真的就不懂了,似乎你那个附件没有这个问题啊,选中复选框之后,其他项是没有被自动选中的
作者: 大白菜小白菜    时间: 2015-2-3 15:37
站到终点站 发表于 2015-2-3 15:15
这下真的就不懂了,似乎你那个附件没有这个问题啊,选中复选框之后,其他项是没有被自动选中的

你点“清除”刷新自窗体没?刷新子窗体后就显示所有记录被选定了。
作者: 站到终点站    时间: 2015-2-3 16:22
我的版本是2010的,没有这个问题啊
[attach]55588[/attach]



作者: 大白菜小白菜    时间: 2015-2-3 16:32
站到终点站 发表于 2015-2-3 16:22
我的版本是2010的,没有这个问题啊

不是你那样选择的,用窗体上头的“审核选择”复选框选择查询得到的结果,而不是手工一个个勾选(考虑到查询结果可能有数百条呢)。你用“审核选择”复选框勾选查询得到的结果然后点击“清除”刷新窗体就会显示所有记录被勾选了。我想是不是审核勾选事件代码有问题,我是小白也不懂,老师给我看看。
作者: 大白菜小白菜    时间: 2015-2-3 16:37
站到终点站 发表于 2015-2-3 16:22
我的版本是2010的,没有这个问题啊

我想“审核选择”复选框事件通过代码改成:只选定当前窗体显示的记录应该就不会有问题。但不知道代码怎么改。
作者: 站到终点站    时间: 2015-2-3 16:57
把审核_AfterUpdate过程代码更改成下面的样子
  1. Private Sub 审核_AfterUpdate()

  2.     DoCmd.SetWarnings False
  3.     If Me.订单表查询子窗体.Form.Filter = "" Then
  4.         DoCmd.RunSQL "UPDATE 订单表 SET 审核=" & Me.审核
  5.     Else
  6.         DoCmd.RunSQL "UPDATE 订单表 SET 审核=" & Me.审核 & " Where " & Me.订单表查询子窗体.Form.Filter
  7.     End If
  8.     DoCmd.SetWarnings True
  9.     Me.订单表查询子窗体.Requery
  10. End Sub
复制代码



作者: 大白菜小白菜    时间: 2015-2-3 17:07
站到终点站 发表于 2015-2-3 16:57
把审核_AfterUpdate过程代码更改成下面的样子

很感谢你!纠结我这么久的问题解决了。谢谢前辈!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3