具有计算表达式的子查询的条件表达式中的数据类型不匹配

时间:2013-02-28 21:58:13

标签: sql ms-access

我正在尝试在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

来自DeExtrREF的变量Query6如下:

 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

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

1 个答案:

答案 0 :(得分:1)

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

我不确定,但这可能是与空相关的错误;将其添加到访问应用中的模块:

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

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