Sql 具有计算表达式的子查询的条件表达式中的数据类型不匹配
我正在尝试在MS Access中创建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
“条件”错误消息 子查询是
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
做相同的事情。