Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access:实现;勾选“全部”;包含数据表子窗体的窗体中的框_Ms Access_Controls - Fatal编程技术网

Ms access MS Access:实现;勾选“全部”;包含数据表子窗体的窗体中的框

Ms access MS Access:实现;勾选“全部”;包含数据表子窗体的窗体中的框,ms-access,controls,Ms Access,Controls,我有一个表单,其主要目的是包含一个数据表子表单(该表单提供了一个跨页面的通用视觉主题以及导航按钮,有时还提供了子表单的选择条件) 我的一个子窗体有一个复选框 用户行为将是: 打开这张表格 根据某些规范筛选数据表 做一些离线的事情,例如,十个可见的行项目 检查这十行项目上的字段(是/否字段),以表明已完成 我希望用户能够选中一个框,然后选中所有可见框 挑战在于它必须是可见的,也就是说,取决于安装了什么过滤器 我尝试在主窗体中创建一个名为“Check All”的复选框,该复选框运行的代码如下: m

我有一个表单,其主要目的是包含一个数据表子表单(该表单提供了一个跨页面的通用视觉主题以及导航按钮,有时还提供了子表单的选择条件)

我的一个子窗体有一个复选框

用户行为将是:

  • 打开这张表格
  • 根据某些规范筛选数据表
  • 做一些离线的事情,例如,十个可见的行项目
  • 检查这十行项目上的字段(是/否字段),以表明已完成
  • 我希望用户能够选中一个框,然后选中所有可见框

    挑战在于它必须是可见的,也就是说,取决于安装了什么过滤器

    我尝试在主窗体中创建一个名为“Check All”的复选框,该复选框运行的代码如下:

    me.sfrmReport.Control.reported.value = me.chkCheckAll.value
    
    但不幸的是,这只检查了活动行,而不是所有行。我知道我可以在基础表上运行查询,但它需要复制用户过滤器

    事实上,更酷的可能是“选中高亮显示”框,它只选中高亮显示的行

    但我认为“全部检查”会更好


    我试图找到这个,但我的搜索技能失败了。我本以为这有点普遍,但也许我想的不对。我确实注意到,有一个sum函数,它可以自动对数据表中过滤的/可见的行求和,因此仅与可见行交互的概念至少在某种程度上是标准的。

    好吧,复选框当然不应该位于“行”上。所以我们假设在组合框旁边,您放置了一个复选框。(无法想象按钮或代码会被放置在行上)

    比如说,在屏幕截图中的组合框旁边,有一个名为check all的按钮

    该按钮后面的代码可能是:

    dim rst     as dao.RecordSet
    set rst = me.MySubForm.Form.RecordSetClone
    rst.movefirst
    do while rst.EOF = false
       rst.edit
       rst!ResultReported = true
       rst.update
       rst.moveNext
    loop
    me.MySubForm.Form.Refresh
    
    因此,上面的操作将直接针对子表单数据源(当前过滤的记录集)

    我“认为”从您的屏幕截图来看,表单的顶部(带有combo)是主表单,您显示的子表单是子表单

    因此,当然您必须替换我上面使用的控件的名称,以及复选框的字段名

    因此,获取该记录集的格式为:

    me.MySubFormControlName.Form.RecordSetClone
    
    当然,在代码运行后刷新子窗体是非常困难的

    me.MySubFormControlName.Form.Refresh
    

    请注意,intel sense应该可以工作并帮助您。如果代码没有编译,那么在编译之前不要尝试运行它。

    那么,复选框肯定不应该在“行”上。所以我们假设在组合框旁边,您放置了一个复选框。(无法想象按钮或代码会被放置在行上)

    比如说,在屏幕截图中的组合框旁边,有一个名为check all的按钮

    该按钮后面的代码可能是:

    dim rst     as dao.RecordSet
    set rst = me.MySubForm.Form.RecordSetClone
    rst.movefirst
    do while rst.EOF = false
       rst.edit
       rst!ResultReported = true
       rst.update
       rst.moveNext
    loop
    me.MySubForm.Form.Refresh
    
    因此,上面的操作将直接针对子表单数据源(当前过滤的记录集)

    我“认为”从您的屏幕截图来看,表单的顶部(带有combo)是主表单,您显示的子表单是子表单

    因此,当然您必须替换我上面使用的控件的名称,以及复选框的字段名

    因此,获取该记录集的格式为:

    me.MySubFormControlName.Form.RecordSetClone
    
    当然,在代码运行后刷新子窗体是非常困难的

    me.MySubFormControlName.Form.Refresh
    

    请注意,intel sense应该可以工作并帮助您。如果代码未编译,则在编译之前不要尝试运行它。

    通常不需要刷新。如果是,则可能不需要刷新。如果将完整的sql语句分配给子窗体,则access肯定会自动重新查询。但是如果只是更新reocrdset,那么在某些情况下确实需要刷新。但是,如果不刷新,它可能是可以的。如果弹出了某个对话框表单,那么在返回时,通常确实需要刷新。由于我们没有为子窗体记录集分配全新的sql语句,而是直接修改reocrdset(克隆),因此通常需要刷新。非常感谢。我将在接下来的几天内实现这一点,然后提供复选标记。次要注释:最后一行应该是.form.refresh。它现在缺少.form(在后面的评论中有)。但除此之外,其他方面的效果都很好。这是我丢失的克隆片段。非常有用。ThanksThanks-修复了通常不需要刷新的问题。如果是,则可能不需要刷新。如果将完整的sql语句分配给子窗体,则access肯定会自动重新查询。但是如果只是更新reocrdset,那么在某些情况下确实需要刷新。但是,如果不刷新,它可能是可以的。如果弹出了某个对话框表单,那么在返回时,通常确实需要刷新。由于我们没有为子窗体记录集分配全新的sql语句,而是直接修改reocrdset(克隆),因此通常需要刷新。非常感谢。我将在接下来的几天内实现这一点,然后提供复选标记。次要注释:最后一行应该是.form.refresh。它现在缺少.form(在后面的评论中有)。但除此之外,其他方面的效果都很好。这是我丢失的克隆片段。非常有用。谢谢谢谢-修复了刷新