仅在应用过滤器时出现语法错误

时间:2018-08-22 20:11:36

标签: sql ms-access

在MS Access中,我建立了一个查询,乍看之下它看起来完全符合我的要求,直到尝试应用过滤器为止。我是在“设计”视图中构建的,但是SQL语句是:

   SELECT tblTestCableDesign.ConnectorRefDes, 
          tblTestCableDesign.ConnectorPN, 
          DLookUp("[Type]","tblMMshells","[Code] = '" & LEFT([ConnectorPN],7) & "'") AS ShellType
     FROM (
          tblTestCablePNs 
    INNER 
     JOIN tblTestCables 
       ON tblTestCablePNs.[P/N] = tblTestCables.[P/N]) 
    INNER 
     JOIN tblTestCableDesign 
       ON tblTestCablePNs.[P/N] = tblTestCableDesign.[CablePN]
    WHERE (((LEFT([ConnectorPN],4)) LIKE "80#-"));

当我尝试对计算所得的字段ShellType进行过滤时,出现错误:

  

查询表达式'[Code] =''805-00''中的语法错误(缺少运算符)

同样,查询运行时我没有收到任何错误或#VALUES,每条记录在查找表中都有正确的值。我注意到了几件事:

  1. 给定的表达式中没有语法错误(“ {[1}}返回null。”是正确的。我确认这是我摆脱{ {1}}调用并将字符串直接输入DlookUp

  2. “ 805-00”仅是六个字符,而不是LEFT要求的7个字符

  3. 我还有另一个几乎相同的查询,运行得很好,尽管Where条件和P / N解析不同。

  4. 在我修改主表上的记录之前,这一直很好(至少在本部分中如此)。我所做的只是更改了ConnectorPN,因此它不会显示在此查询中。

我在这里茫然……任何方向都将不胜感激。

1 个答案:

答案 0 :(得分:0)

由于SunKnight0,我意识到表中的记录中有一个'。因此Left实际上返回了字符串'805-00。但是,我不知道为什么这只会在过滤时引起问题,而不是在查询最初运行时引起问题。