【问题标题】:Data type mismatch in criteria expression for the subquery with calculated expression具有计算表达式的子查询的条件表达式中的数据类型不匹配
【发布时间】:2013-02-28 21:58:13
【问题描述】:

我正在尝试在 MS Access 中创建 SQL 子查询。获取“表达式中的类型不匹配
标准”错误消息。

子查询是

SELECT *
  (SELECT Locs_Eq.Locs_Eq 
   FROM Locs_Eq 
   WHERE Query6.StDeExtrREF=CStr(Locs_Eq.Full_VendSN)
  ) AS Loc_1
FROM Query6

Query6中的变量DeExtrREF如下:

 IIF(PDetail.VeName="Siem" AND [DeExtr1]="Contr REF#",
     TRIM(MID (PDetail.Desc, (InStr([PDetail.Desc],":")+1), LEN(PDetail.Desc))),
     TRIM(MID (PDetail.Desc, (InStr([PDetail.Desc],":")+1), LEN(PDetail.Desc))) 
    ) AS DeExtrREF

我尝试将 CStr 添加到变量中,但仍然收到错误消息。请帮忙。

【问题讨论】:

  • 能否提供补充信息?这本身就是一个看起来很奇怪的查询。由于它来自 Access,我猜还涉及多个其他查询。如果您提供一些表结构并让我们了解您正在尝试做什么,您可能会得到更多帮助。

标签: sql ms-access


【解决方案1】:

我假设您在第一行的 SELECT * 之后有一个逗号。如果没有,请先更改此设置,看看是否有帮助。

我不确定,但可能是与 null 相关的错误;将此添加到您的访问应用程序中的模块:

public function is_null(val as variant, rplc as string) as string
    if isnull(val) then
        is_null = rplc
    else
        is_null = cstr(val)
    end if
end function

然后更改您的查询以使用它,如下所示:

SELECT q.*,
  (SELECT l.Locs_Eq 
   FROM Locs_Eq l 
   WHERE is_null(q.StDeExtrREF, "") = CStr(is_null(l.Full_VendSN, ""))
  ) AS Loc_1
FROM Query6 q

希望这会有所帮助。我会自动为表和查询设置别名,但作为一般规则,如果您的查询不太难理解,您更有可能在此处获得帮助。

【讨论】:

  • 还有一个内置函数NZ,它和你的is_null做同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多