1

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

变量DeExtrREFfromQuery6如下:

 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 添加到变量中,仍然收到错误消息。请帮忙。

4

1 回答 1

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

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

于 2013-03-01T02:20:43.817 回答