我花了半天的时间试图弄清楚为什么会出现错误消息框
无法找到字段' TransactionTypeID'
在我的
database。如果您打开Form1
,然后使用标题在列TransactionTypeID
上应用任何过滤器(例如,取消选中空白),然后尝试打开第二列的排序/过滤,则会显示错误消息。
如果我将组合框转换为文本框或从表单选择表Tenants1
中删除,则错误消失。我使用Access 2010 32位。在这个例子中,我尽可能地简化了表格,从头开始创建数据库,导入数据,压缩/修复都没有帮助。
你有什么想法吗?
答案 0 :(得分:1)
我发现了问题。如果表以这种方式加入,则内置数据表表单过滤以错误的方式工作:
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;
看起来这是另一个Access错误。
另外,感谢@Munsterlander,如果将表单的记录源替换为已保存的查询而不是SELECT
,问题就会消失答案 1 :(得分:0)
尝试将您的字段引用为Forms!FORMNAME!CONTROLNAME。我假设,根据您所写的内容,您尝试根据组合框中选择的内容过滤查询。
答案 2 :(得分:0)
从表单RecordSource中删除表Tenants1(此表不是必需的,不会在生成的查询中公开字段)。
您还会注意到您的记录源已设置(通过Access)ReadOnly(设计错误,未定义连接)。尝试在Tenant1表中添加几个记录,比如David和Nathan。
您会发现现在您的查询将输出6条记录(而不是2条记录),因为查询(没有连接)为表Tenant1(3)的所有记录列出一行,为表VouchersMain1的每条记录列出一行( 2),总共给出2 * 3 = 6行。