2014-04-15 1 views
0

VB6에서 SQL을 실행하고 있는데이 코드는 currFA를 숫자 1로 정의하는 곳에서 사용하고있는 문자열입니다. 내부 조인과 유니온을 사용하므로 디버깅 및 작업을 수행했습니다. 내가 VB6에 넣으려고하는 Access에서 만든 쿼리). 지금 당장 실행중인 운영자에게 오류가 발생합니다.연산자/구문 오류

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _ 
& "FROM ([~FIRE_AREAS] INNER JOIN [~ALLTARGETS] ON [~FIRE_AREAS].FULL_ID = [~ALLTARGETS].FA) INNER JOIN ([~ALLRWCBL] INNER JOIN [~ALLCBLEQ] ON" _ 
& "[~ALLRWCBL].Cable = [~ALLCBLEQ].Cables) ON [~ALLTARGETS].TARGET = [~ALLRWCBL].Cable" _ 
& "WHERE ((([~FIRE_AREAS].INDEX) = '" & currFA & "'))" _ 
& "UNION" _ 
& "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _ 
& "FROM [~FIRE_AREAS] INNER JOIN (([~ALLTARGETS] INNER JOIN [~ALLRWCBL] ON [~ALLTARGETS].TARGET=[~ALLRWCBL].Raceway) INNER JOIN [~ALLCBLEQ] ON" _ 
& "[~ALLRWCBL].Cable=[~ALLCBLEQ].Cables) ON [~FIRE_AREAS].FULL_ID=[~ALLTARGETS].FA" _ 
& "WHERE ((([~FIRE_AREAS].INDEX) = '" & currFA & "'));" 

오류 및 구문 개선 팁에 대한 도움을 주시면 대단히 감사하겠습니다. 아직도 배우기!

감사합니다.

+1

Cthulhu는 이것이 실제 문제인지 여부 만 알고 있지만 각 줄의 끝이나 다음 줄의 시작 부분에 공백이 있어야합니다. x = "Select ..."& "FROM ..." –

+0

'currFA'는 숫자이지만 '(([FIRE_AREAS] .INDEX')는 숫자로 정의되어 있습니까? , 그런 다음 ''& currFA & " '에서 작은 따옴표를 제거해야합니다. –

답변

2

귀하의 문자열은 쓸 때 그렇게 선 사이에 공백이 없습니다 :이된다

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _ 
& "FROM ([~FIRE_AREAS] … 

INDEXFROM 사이에 공간이 없기 때문에 분명히 잘못된 SQL입니다

SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEXFROM ([~FIRE_AREAS] … 

같은 SQL 문자열 .

쉬운 솔루션 (또는 열려있는 각 인용 후) 각 닫는 따옴표 앞에 공백을 넣어 그냥 :

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX " _ 
    & "FROM ([~FIRE_AREAS] … 

을하지만,이 같은 상대적으로 복잡한 쿼리를 작성하는 자신을 발견 할 경우에, 나는 당신이하는 것이 좋습니다 것입니다 대신 저장 프로 시저 또는 뷰로 변환하는 것이 좋습니다.

+0

감사합니다! 바보 같은 감독. – Andy