Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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 2010 - Fatal编程技术网

Ms access 表单上的数据过滤会生成;找不到字段“;

Ms access 表单上的数据过滤会生成;找不到字段“;,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我花了半天时间试图弄清楚为什么会出现一个错误消息框 找不到字段“TransactionTypeID” 在我的 . 如果打开Form1,然后使用标题对列TransactionTypeID应用任何筛选器(例如,取消选中空格),然后尝试打开第二列的排序/筛选,将显示错误消息。 如果我将组合框转换为文本框或从表单选择表中删除租户1,错误将消失。我使用32位的Access 2010。在这个例子中,我尽可能简化了表,从头创建数据库,导入数据,压缩/修复都没有帮助 你有什么想法吗?尝试将你的领域作为表单引用!

我花了半天时间试图弄清楚为什么会出现一个错误消息框

找不到字段“TransactionTypeID”

在我的 . 如果打开
Form1
,然后使用标题对列
TransactionTypeID
应用任何筛选器(例如,取消选中空格),然后尝试打开第二列的排序/筛选,将显示错误消息。 如果我将组合框转换为文本框或从表单选择表中删除租户1,错误将消失。我使用32位的Access 2010。在这个例子中,我尽可能简化了表,从头创建数据库,导入数据,压缩/修复都没有帮助


你有什么想法吗?

尝试将你的领域作为表单引用!FORMNAME!控制名。根据您编写的内容,我假设您正在尝试根据组合框中选择的内容筛选查询。

我发现了问题。如果表以这种方式联接,则内置数据表表单筛选将以错误的方式工作:

SELECT VouchersMain1.VDate, VouchersMain1.TransactionTypeID
FROM Tenant1 INNER JOIN VouchersMain1 ON Tenant1.TenantID = VouchersMain1.TenantID;
如果我反转表连接方向,则内置过滤效果良好:

SELECT VouchersMain1.VDate, VouchersMain1.TransactionTypeID
FROM VouchersMain1 INNER JOIN Tenant1 ON VouchersMain1.TenantID = Tenant1.TenantID;
看起来这是另一个访问错误


另外,感谢@Munsterlander,如果表单的记录源被保存的查询替换而不是选择从表单记录源中删除表Tenants1(此表不是必需的,并且不会在结果查询中显示字段),则问题将消失

您还需要注意的是,您的记录源(通过访问)设置为只读(设计错误,未定义联接)。试着在Tenant1表中添加一些记录,比如说David和Nathan


您会发现,现在您的查询将输出6条记录(而不是2条),因为查询(没有联接)列出表Tenant1(3)的所有记录的一行,以及表VouchersMain1(2)的每条记录的一行,总共2*3=6行。

您在“引用”下的意思是什么?表单根本不包含任何代码。是的,我正在尝试根据组合框中选择的内容过滤查询。其他数据库中的类似查询可以正常工作。请编辑您的查询。在字段下方的条件框中,您需要输入我写的内容,但使用表单名和组合框名作为controlname。这样,查询就可以找到您的控件。错误是它找不到指定的控件,因为您必须通过长名称引用它。我下载了您的db,没有看到任何错误。按Filter filters,再次按unfilters。我刚刚下载了你的db,看看你在做什么。你到底想干什么?古斯塔夫是正确的,因为它做了它应该做的事情。您的问题表明您正在筛选表单,错误是因为您筛选出了表单数据。MS Access正在做它应该做的事情。如果您在表本身上执行过滤器,那么一切都会按照您所希望的方式工作。理想情况下,如果没有像我前面写的那样首先创建一个实际的查询并设置条件过滤器,就不会在数据表视图中使用表单。更有效地使用Access。我使用内置的数据表过滤功能(列标题中的小箭头,如Excel中的小箭头)进行过滤。如果从表单的查询表Tenants1中删除或替换为任何其他表,则筛选工作正常!我不明白租户1如何影响过滤。这可能是一个bug,或者我仍然不理解一些东西。这只是一个非常复杂的查询的简化变体,它有两个以上的表,所有表都连接在一起,select返回几十个字段,包括租户。当我反转这两个表之间的联接时,整个查询工作得很好。我下载了你的数据库,但没有在你的两个表之间定义联接。。。