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

Sql 具有计算表达式的子查询的条件表达式中的数据类型不匹配,sql,ms-access,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 来自Query6的变量DeExtrREF如下所示: IIF(PDetail.VeName="Siem" AND [DeExt

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

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

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

我不确定,但它可能是一个与空相关的错误;将此添加到access应用程序中的模块:

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
然后将查询更改为使用此选项,如下所示:

 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
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

希望这有帮助。我会自动为表和查询添加别名,但一般来说,如果您的查询不太难理解,您更可能在此处获得帮助。

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

我不确定,但它可能是一个与空相关的错误;将此添加到access应用程序中的模块:

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
然后将查询更改为使用此选项,如下所示:

 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
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

希望这有帮助。我会自动为表和查询添加别名,但一般来说,如果您的查询不太难理解,您更可能在此处获得帮助。

您能提供其他信息吗?这本身就是一个看起来很奇怪的问题。由于它来自Access,我猜还涉及多个其他查询。如果您提供一些表格结构,并告诉我们您正在尝试做什么,您可能会得到更多帮助。您可以提供其他信息吗?这本身就是一个看起来很奇怪的问题。由于它来自Access,我猜还涉及多个其他查询。如果您提供一些表结构并告诉我们您正在尝试做什么,您可能会得到更多帮助。还有一个内置函数,
NZ
,它与您的
is\u null
做相同的事情。还有一个内置函数,
NZ
,它与您的
is\u null
做相同的事情。