2013-05-24 1 views
0

저는 Access에 처음 왔고 잠시 동안 VB에서 일하지 않았습니다. 데이터베이스에서 문제가 발생했습니다. 누군가 여기에서 약간의 불을 붙일 수 있습니까? 쿼리 및 오류 :복잡한 VBScript의 액세스 쿼리

SELECT piname, 
     SUM(cat1) AS CatI, 
     SUM(cat2) AS CatII, 
     SUM(cat3) AS CatIII, 
     SUM(cat4) AS CatIV, 
     0   AS CatV, 
     0   AS CatVI, 
     SUM(cat7) AS CatVII, 
     SUM(cat8) AS CatVIII, 
     SUM(cat9) AS CatIX, 
     SUM(dbltime) AS CatIXTime, 
     0   AS CatX, 
     0   AS CatXI, 
     SUM(cat12) AS CatXII 
FROM [SELECT Trim(users.pilastname & ' ' & users.pifirstname) AS PIName, 
       SUM(Abs(log.chargef))       AS Cat1, 
       SUM(Abs(log.chargeg))       AS cat2, 
       SUM(Abs(log.chargee))       AS cat3, 
       SUM(Abs(log.charget))       AS cat4, 
       0            AS Cat7, 
       0            AS Cat8, 
       0            AS Cat9, 
       0            AS dblTime, 
       SUM(log.hours)         AS Cat12 
     FROM log, 
       users, 
       raform 
     WHERE LEFT(log.sampleid, 2) = users.pi 
       AND Ucase(users.location) = 'S' 
       AND raform.sampleid = log.sampleid 
       AND log.finisheddate BETWEEN #5/1/2013# AND #6/1/2013# 
       AND Ucase(machine) = 'OUT' 
     GROUP BY Trim(users.pilastname & ' ' & users.pifirstname) 
     UNION 
     SELECT Trim(users.pilastname & ' ' & users.pifirstname), 
       0, 
       0, 
       0, 
       0, 
       Count(plab.billing), 
       0, 
       0, 
       0, 
       0 
     FROM plab, 
       pform, 
       users, 
       userinfo 
     WHERE userinfo.pi = users.pi 
       AND Ucase(users.location) = 'S' 
       AND plab.sampleid = pform.sampleid 
       AND plab.email = userinfo.email 
       AND plab.finisheddate BETWEEN #5/1/2013# AND #6/1/2013# 
       AND plab.finished = true 
       AND plab.billing = 1 
     GROUP BY Trim(users.pilastname & ' ' & users.pifirstname) 
     UNION 
     SELECT Trim(users.pilastname & ' ' & users.pifirstname), 
       0, 
       0, 
       0, 
       0, 
       0, 
       Count(plab.billing), 
       0, 
       0, 
       0 
     FROM plab, 
       pform, 
       users, 
       userinfo 
     WHERE userinfo.pi = users.pi 
       AND Ucase(users.location) = 'S' 
       AND plab.sampleid = pform.sampleid 
       AND plab.email = userinfo.email 
       AND plab.finisheddate BETWEEN #5/1/2013# AND #6/1/2013# 
       AND plab.finished = true 
       AND plab.billing = 2 
     GROUP BY Trim(users.pilastname & ' ' & users.pifirstname) 
     UNION 
     SELECT Trim(users.pilastname & ' ' & users.pifirstname), 
       0, 
       0, 
       0, 
       0, 
       0, 
       0, 
       0, 
       Count(plab.billing), 
       SUM(t_desa + t_zipt + t_dige + t_gel1 + t_gel2 + t_mtof 
        + t_ftms + t_nano + t_hplc + t_data + t_anal + t_repo 
        + t_othe) 
     FROM plab, 
       pform, 
       users, 
       userinfo 
     WHERE userinfo.pi = users.pi 
       AND Ucase(users.location) = 'S' 
       AND plab.sampleid = pform.sampleid 
       AND plab.email = userinfo.email 
       AND plab.finisheddate BETWEEN #5/1/2013# AND #6/1/2013# 
       AND plab.finished = true 
       AND plab.billing = 3 
     GROUP BY Trim(users.pilastname & ' ' & users.pifirstname)]. AS grausig 
GROUP BY piname 

SoftArtisans.ExcelTemplate.1 오류 '80020009'

토큰

아무것도, 또는 무효에 결합하지 않습니다. 데이터 마커에 대한 데이터 소스를 찾을 수 없습니다. 사용자

+0

SoftArtisans.ExcelTemplate.1 *에 대해 들어 본 적이 없습니다. Access 쿼리 디자이너에서 동일한 쿼리를 실행할 때 오류가 발생합니까? 그렇다면이 컨텍스트에서 오류 메시지는 무엇입니까? – HansUp

+0

Btw, 코드를 게시 할 때 {} 버튼을 사용하여 더 나은 형식으로 유지하십시오. –

+0

Hans, 오류 팝업이 표시됩니다. SELECT 문에 맞춤법이 틀리거나 누락 된 예약어 또는 인수 이름이 포함되어 있거나 구두점이 잘못되었습니다. – Mattehicks

답변

4

두 가지 문제점이 있습니다.

하위 쿼리를 사용 중입니다. 그렇게 할 때 완전한 질의가되어야합니다. 하위 쿼리에 FROM 문이 누락되었습니다.

또한 하위 쿼리는 괄호()로 묶어야합니다.

This site은 SQL 문 형식 지정에 매우 뛰어나므로 & 편집을 쉽게 볼 수 있습니다.

+0

전에주의를 기울이지는 않았지만 포맷터는 마지막 비트 이후에 쿼리의 일부를 잘라냅니다. 나는 원본을 다시 게시 할 것입니다 ... – Mattehicks

+1

+1과 대답은 SQL 포맷터로 연결됩니다. @ user1771824 : Tom이 말한 것처럼 하위 쿼리는 대괄호 (') '가 아니라 괄호 (')로 묶어야합니다. –

+0

방금 ​​"액세스 쿼리 분석기"를 사용하고 데이터베이스와 함께 작업했습니다. 내가 왜 서버에서 작동하지 않는지 모르겠다. – Mattehicks