我将Access用户应用程序从使用本机Access表转换为使用ODBC链接的SQL Server表。
我有一组表单,这些表单通过下拉列表中的选择进行过滤(在独立选择表单中)。按照设计,如果用户将下拉列表留空,则表单将不经过滤地启动。
所有这些都适用于本机表,但是当我使用链接表尝试它时,我得到ODBC--call failed
错误
SQL查询为我用作过滤表单的记录源的查询生成的Access是:
SELECT linked.ASSIGNED_CARE_COORDINATOR, [rest of the variables]
WHERE (((linked.ASSIGNED_CARE_COORDINATOR)=[Forms]![frmCoord_Selector]![cmbCoords]))
OR (((([linked].[ASSIGNED_CARE_COORDINATOR])
Like [Forms]![frmDeadline_Report_Coord_Selector]![cmbCoords]) Is Null));
我知道ODBC连接本身很好;如果我在OR
后删除代码,则查询与链接表一起使用,但当然没有show-all-if-null功能。
为什么这适用于本机表而不是完全相同的表的链接版本?
答案 0 :(得分:0)
问题是LIKE
子句中的OR
,但Access显然可以在本机表上运行该奇怪的代码。因此,无论链接表还是本机表,将产生所需行为的正确代码是:
SELECT linked.ASSIGNED_CARE_COORDINATOR, [rest of the variables]
FROM linked
WHERE ((linked.ASSIGNED_CARE_COORDINATOR)=[Forms]![frmCoord_Selector]![cmbCoords])
OR [Forms]![frmCoord_Selector]![cmbCoords] Is Null