2013-02-28 3 views
1

MS Access에서 SQL 하위 쿼리를 만들려고합니다. "형식이 일치하지 않습니다.
"오류 메시지가 나타납니다. I는 변수를 추가하는 시도에서는 CStr계산식이있는 하위 쿼리에 대한 조건 식의 데이터 형식이 일치하지 않습니다.

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 

여전히 오류 메시지가 나타날

부질 다음과 같이 행 Query6

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

DeExtrREF는 가변이다. 도와주세요.

+0

추가 정보를 제공해 줄 수 있습니까? 그 자체로 이것은 매우 이상하게 보이는 쿼리입니다. Access에서 왔기 때문에 다른 여러 쿼리가 관련되어 있다고 생각합니다. 어떤 테이블 구조를 제공하고 무엇을하려고하는지에 대한 아이디어를 주면 아마 도움이 될 것입니다. – Lance

답변

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 

희망을. 테이블과 쿼리는 자동으로 별칭을 지정하지만 일반적으로 쿼리가 이해하기 어려울 경우 여기에서 도움을 얻을 가능성이 높습니다.

+1

'is_null'과 같은 일을하는 내장 함수'NZ'가 있습니다. –

관련 문제