缺少数据表中的快速过滤器

时间:2012-08-21 06:43:01

标签: ms-access

我在数据表视图模式下有一个子窗体,它缺少通常带有复选框的过滤器选项。

缺少

通过qick过滤器和过滤器的复选框我的意思是:

有人能告诉我怎么能得到回来的?

15 个答案:

答案 0 :(得分:10)

今天我偶然发现了一个可能的答案。试试这个选项

File > Options... > Filter lookup options for <your Db name> Database

将选项Don't display lists when more than this number of records is read:从1000(默认值)更改为更符合您需求的更大数字。

  1. 转到“选项”
  2. 查找“当前数据库”
  3. 向下滚动,直到找到{....您的文件名...}的过滤查找选项 它将显示列表,如果您的数据输入超过1,000,则不允许您进行任何过滤 您只需选择ODBC字段并根据需要设置条目,即2,000
  4. 全部。

答案 1 :(得分:2)

我确实认为这是由大量非重复条目引起的。换句话说,它发生的原因是您有许多条目无法从复选框过滤器中受益。他们留下“文本过滤器&gt;”所以你可以搜索,但忽略了复选框,因为它只是一个列表太长。我不知道有哪种方法可以改变这种行为,因为它作为一种非自定义的内置在Access中。

底线:复选框对话的选项太多,无法更改。

答案 2 :(得分:2)

如果您要解决最初列出的问题,以上答案都不正确。在我自己的数据库中玩弄了这个问题后,我发现Access不再支持带链接字段的交叉引用查询(例如,使用一个带有通用名称[text]的下拉列表链接到主表中的字段使用数字来减少记录/数据库大小)。我发现通过将索引字段的大小从0调整到.0202,它将允许过滤器机制再次工作,但会自动列出字段中的数字而不是相关的公共名称。似乎解决此问题的唯一方法是将关系链接从数字更改为文本,并使用通用名称作为实际条目(我认为在纪念碑上有错误的更改)。希望他们能解决它。与此同时,我会寻找更好的答案。如果我找到一个,我会在这里发布。 -DFoxII

答案 3 :(得分:1)

表单的数据源查询有一个过滤器参数集,它引起了递归过滤。当我删除该过滤器(因为它没用)时,它运行良好。 这就像是一个产生这个问题的逻辑错误。

答案 4 :(得分:1)

这是一个旧帖子;但是,列出的答案并不能解决我的特定问题。我也没有使过滤器列表出现在子窗体上。敲了敲我的脑袋后,我发现我的主表单的“允许过滤器”设置为“否”。即使所有子表单都启用了“允许过滤器”,它似乎继承了主表单设置。也许这会帮助下一个有类似问题的人。

答案 5 :(得分:1)

这是一个有很多答案的老问题。这些都不适合我使用Access2016。只有在将表格的数据源从SQL语句更改为Access查询的简单名称后,它才起作用,并且重新出现了快速筛选器。

答案 6 :(得分:0)

列上的数据类型看起来是number,在这种情况下它根本没有文本过滤器。请注意,您的过滤选项是“数字过滤器”而不是“文本过滤器”

答案 7 :(得分:0)

我解决了类似的问题 - 快速过滤器在Access 2013中拆分表单的数据表部分中不可用。快捷菜单的表单属性设置已设置为否。我将其更改为是,瞧,快速过滤器变得可用。

答案 8 :(得分:0)

只需将您的数据类型更改为短文本即可。

答案 9 :(得分:0)

确保不要使用“NO”作为字段名称。我有一个名为NO的字段,它导致过滤器消失。它似乎是MS访问的无证“功能”。

答案 10 :(得分:0)

在这里,我找到了结果。 首先,我要感谢这个答案,他给了我火花。

&#34;表单的数据源查询有一个过滤器参数集,它引起了递归过滤。当我删除该过滤器(因为它没用)时,它运行良好。这就像是一个产生这个问题的逻辑错误。&#34;

我使用两个代码来显示解决方案,实际上它是由Access自己的原因造成的。

Code1:

Me.RecordSource = "SELECT * FROM CAPData ORDER BY [DAILY_CLIENT],[CLIENT_NAME],[ASSET_NAME]"

在这种情况下,有时它不会导致自动过滤。

代码2:

Me.RecordSource = "SELECT * FROM CAPData Where Not IsNull(ID) ORDER BY [DAILY_CLIENT],[CLIENT_NAME],[ASSET_NAME]"

这样就解决了问题。

原因: 在记录源SQL中添加一些条件时,Access将设置自动筛选。 如果您还没有设置,当记录大于某个数字时,自动过滤器就不会出现。但是当您在记录源SQL中添加where条件时,您可以找到自动过滤器。 已经测试了20000多条记录。

第一次写回答,好激动。

答案 11 :(得分:0)

抱歉,我知道这是一个老话题。但我遇到了同样的问题,经过尝试不同的方式(包括这里提到的方法),我想我终于得到了它的工作。所以我在这里发布我的解决方案,以防任何遇到同样问题的人都有帮助。

首先,确保你按照布拉德在答案中所说的那样更改选项。 我有一个包含2列,ID和CustomerName的组合框。在开始时,此组合框的行源是: SELECT ID AS CustomerID,CustomerName FROM tblCustomers ORDER BY CustomerName; 过滤器的复选框未显示。

我发现此查询对于组合框行源有2个问题。 1)您不能为ID列使用别名。 2)您无法对第二列(此处为CustomerName)进行排序。

所以在我将查询更改为: SELECT ID,CustomerName FROM tblCustomers; 复选框回来了! (你可以在第一列进行排序)

我希望这有帮助。

答案 12 :(得分:0)

快速过滤器未显示的原因有多种,正如已经证明的那样。我遇到的三个主要原因:

  1. 您已在 VBA 中或在表单的属性窗口中使用“自定义”SQL 设置了表单的记录源 -- 这些将阻止 Access 选择“快速过滤器”列。

要解决此问题,您需要将 SQL 动态推送到 Access 查询对象中,然后将表单的记录源设置为查询 - 问题已解决。

我使用我编写的名为 CreateQuery 的模块来执行此操作,并像这样调用它:

例如Form1.recordsource = CreateQuery("SELECT * from Table", "qrySource1") 使用下面的子:

PUBLIC SUB CreateQuery(SQL as String, qryName as String)
   Dim qDef As DAO.QueryDef
   With CurrentDb
    For each qDef in .QueryDefs
     If qDef.Name = qryName Then
         .QueryDefs.Delete (qryName)
         Exit For
     End IF
    Next qDef

   set qDef = .createQueryDef(qryName, SQL)
END WITH
set qDef = nothing
END SUB
  1. 下一个真的很狡猾 - 检查以确保源表的字段不是长文本。 Access 不允许在任何长文本字段上使用“快速过滤器”列。

  2. 确保您没有禁用表单的快捷菜单选项,该选项位于表单属性的“其他”选项卡中。

答案 13 :(得分:0)

我遇到了一个问题,即字段不是“可排序的”,即右键单击数据表视图中的列时未显示 A-Z 选项。我从设计视图“控制源”中删除了该字段,然后重新选择了它,然后可以进行排序。

答案 14 :(得分:-1)

我发现如果表单的记录源是包含sort子句的SQL语句,则不会出现快速过滤器。

解决方案:要么删除sort子句(如果您希望对数据进行排序,则不是很有用),或者将包含排序的SQL语句保存为查询,然后将表单的记录源更改为已保存的查询。随后可以使用Voila Quick过滤器。

关心彼得。