2

我有一个保存在 Access 数据库中的查询(相当于 ORACLE、SQL Server 中的视图)。现在我需要在我的选择列表中添加另一列。但是每当我更改 SQL 时,我都会遇到错误。假设我删除了一个逗号,然后将其放回原处。我收到诸如“From 之后的语法错误”、“加入操作中的语法错误”之类的错误。因此,如果我更改任何内容然后撤消更改,我仍然会收到错误。我怎样才能避免这种情况?

编辑:编辑前

SELECT A_B.ALICI, Q.QAINOM, M.TIP, Q.QATARIX, Q.CEMIBORC, R2.ADI AS SAT_NOV, M.TAMADI, M.MARK, SA.MIQDAR, SA.SAQIYM, SA.CEMI, SA.FAIZ, A_B.BORC_SU, A_B.MEBLEG, A_B.FERQ, K_G.CEMI_ODEN, A_B.MOBTEL, SA.NOTE
FROM ([SELECT  Round(Sum([DBKASSA].[MEBLEQ]),3) AS CEMI_ODEN, DBKASSA.KODAL_GT
FROM DBKASSA
WHERE (((DBKASSA.TIP)=1) AND ((DBKASSA.KODAL_GT)=[INBUYERID]) AND ((DBKASSA.TARIX)=[INTILLDATE]))
GROUP BY DBKASSA.KODAL_GT]. AS K_G RIGHT JOIN ([SELECT AL.KODALAN,AL.MOBTEL, IIf([Su_CEMIBORC] Is Null,0,[Su_CEMIBORC]) AS BORC_SU, IIf([Su_MEBLEQ] Is Null,0,[Su_MEBLEQ]) AS MEBLEG, (IIf([Su_MEBLEQ] Is Null,0,[Su_MEBLEQ]))-(IIf([Su_CEMIBORC] Is Null,0,[Su_CEMIBORC])) AS FERQ, AL!OBYEKT & (IIf(AL!NUMAY Is Not Null," - " & AL!NUMAY)) AS ALICI
FROM 
 (
   SELECT DBKASSA.KODAL_GT, Sum(DBKASSA.MEBLEQ) AS Su_MEBLEQ
   FROM DBKASSA
   WHERE (((DBKASSA.TIP)=1) AND ((DBKASSA.KODAL_GT)=[INBUYERID]))
   GROUP BY DBKASSA.KODAL_GT
   ) AS OD_AL 
    RIGHT JOIN (
    (
    SELECT DBQAIME.KODALAN, Sum(DBQAIME.CEMIBORC) AS Su_CEMIBORC
    FROM DBQAIME
    WHERE (((DBQAIME.KODALAN)=[INBUYERID]))
    GROUP BY DBQAIME.KODALAN
    ) AS B_AL 
    RIGHT JOIN DBALAN AS AL ON B_AL.KODALAN = AL.KODALAN) ON OD_AL.KODAL_GT = AL.KODALAN
    WHERE (((AL.KODALAN)=[INBUYERID]))
 ]. AS A_B INNER JOIN DBQAIME AS Q ON A_B.KODALAN = Q.KODALAN) ON K_G.KODAL_GT = A_B.KODALAN) INNER JOIN (DBMAL AS M INNER JOIN (DBSA AS SA INNER JOIN [SELECT R2.KOD, R2.VID, R2.ADI
   FROM DBRAB2 AS R2
   WHERE (((R2.VID)=3))]. AS R2 ON SA.KODEMLNO = R2.KOD) ON M.KODMAL = SA.KODMAL) ON Q.QAINOM = SA.QAINOM
WHERE (((Q.QAINOM)=[INSALEINVOICE]))
ORDER BY M.TIP, M.TAMADI;

编辑后;

SELECT A_B.ALICI, Q.QAINOM, M.TIP, Q.QATARIX, Q.CEMIBORC, R2.ADI AS SAT_NOV, M.TAMADI, M.MARK, SA.MIQDAR, SA.SAQIYM, SA.CEMI, SA.FAIZ, A_B.BORC_SU, A_B.MEBLEG, A_B.FERQ, K_G.CEMI_ODEN, A_B.MOBTEL, SA.NOTE
FROM ([SELECT  Round(Sum([DBKASSA].[MEBLEQ]),3) AS CEMI_ODEN, DBKASSA.KODAL_GT
FROM DBKASSA
WHERE (((DBKASSA.TIP)=1) AND ((DBKASSA.KODAL_GT)=[INBUYERID]) AND ((DBKASSA.TARIX)=[INTILLDATE]))
GROUP BY DBKASSA.KODAL_GT]. AS K_G RIGHT JOIN ([SELECT AL.KODALAN,AL.MOBTEL, IIf([Su_CEMIBORC] Is Null,0,[Su_CEMIBORC]) AS BORC_SU, IIf([Su_MEBLEQ] Is Null,0,[Su_MEBLEQ]) AS MEBLEG, (IIf([Su_MEBLEQ] Is Null,0,[Su_MEBLEQ]))-(IIf([Su_CEMIBORC] Is Null,0,[Su_CEMIBORC])) AS FERQ, AL!OBYEKT & (IIf(AL!NUMAY Is Not Null," - " & AL!NUMAY)) AS ALICI
FROM 
 (
   SELECT DBKASSA.KODAL_GT, Sum(DBKASSA.MEBLEQ) AS Su_MEBLEQ
   FROM DBKASSA
   WHERE (((DBKASSA.TIP)=1) AND ((DBKASSA.KODAL_GT)=[INBUYERID]))
   GROUP BY DBKASSA.KODAL_GT
   ) AS OD_AL 
    RIGHT JOIN (
    (
    SELECT DBQAIME.KODALAN, Sum(DBQAIME.CEMIBORC) AS Su_CEMIBORC
    FROM DBQAIME
    WHERE (((DBQAIME.KODALAN)=[INBUYERID]))
    GROUP BY DBQAIME.KODALAN
    ) AS B_AL 
    RIGHT JOIN DBALAN AS AL ON B_AL.KODALAN = AL.KODALAN) ON OD_AL.KODAL_GT = AL.KODALAN
    WHERE (((AL.KODALAN)=[INBUYERID]))
 ]. AS A_B INNER JOIN DBQAIME AS Q ON A_B.KODALAN = Q.KODALAN) ON K_G.KODAL_GT = A_B.KODALAN) INNER JOIN (DBMAL AS M INNER JOIN (DBSA AS SA INNER JOIN [SELECT R2.KOD, R2.VID, R2.ADI
   FROM DBRAB2 AS R2
   WHERE (((R2.VID)=3))]. AS R2 ON SA.KODEMLNO = R2.KOD) ON M.KODMAL = SA.KODMAL) ON Q.QAINOM = SA.QAINOM
WHERE (((Q.QAINOM)=[INSALEINVOICE]))
ORDER BY M.TIP, M.TAMADI;

顺便说一句,它在 MS Access 2010 中工作。我的是 Access 2003

4

1 回答 1

1

发生的事情是您的子查询或派生表现在像这样被括起来

[stuff here].

这会在编辑时导致错误。

最简单的方法是使用记事本之类的,替换[]。与 () 并粘贴回来。

尝试:

SELECT A_B.ALICI,
       Q.QAINOM,
       M.TIP,
       Q.QATARIX,
       Q.CEMIBORC,
       R2.ADI AS SAT_NOV,
       M.TAMADI,
       M.MARK,
       SA.MIQDAR,
       SA.SAQIYM,
       SA.CEMI,
       SA.FAIZ,
       A_B.BORC_SU,
       A_B.MEBLEG,
       A_B.FERQ,
       K_G.CEMI_ODEN,
       A_B.MOBTEL,
       SA.NOTE
FROM   ((SELECT Round(SUM([DBKASSA].[MEBLEQ]), 3) AS CEMI_ODEN,
               DBKASSA.KODAL_GT
        FROM   DBKASSA
        WHERE  ( ( ( DBKASSA.TIP ) = 1 )
                 AND ( ( DBKASSA.KODAL_GT ) = [INBUYERID] )
                 AND ( ( DBKASSA.TARIX ) = [INTILLDATE] ) )
        GROUP  BY DBKASSA.KODAL_GT) AS K_G
        RIGHT JOIN ((SELECT AL.KODALAN,
                           AL.MOBTEL,
                           Iif([Su_CEMIBORC] IS NULL, 0, [Su_CEMIBORC])
                                                                AS
                            BORC_SU,
                           Iif([Su_MEBLEQ] IS NULL, 0, [Su_MEBLEQ])
                                                                AS
                            MEBLEG,
                           ( Iif([Su_MEBLEQ] IS NULL, 0, [Su_MEBLEQ]) ) - (
                           Iif([Su_CEMIBORC] IS NULL, 0, [Su_CEMIBORC]) )
                                                                AS
                                                                           FERQ,
                           AL ! OBYEKT & ( Iif(AL ! NUMAY IS NOT NULL,
                                           " - " & AL ! NUMAY) ) AS
                                               ALICI
                    FROM   (SELECT DBKASSA.KODAL_GT,
                                   SUM(DBKASSA.MEBLEQ) AS Su_MEBLEQ
                            FROM   DBKASSA
                            WHERE
                    ( ( ( DBKASSA.TIP ) = 1 )
                      AND ( ( DBKASSA.KODAL_GT ) = [INBUYERID] ) )
                            GROUP  BY DBKASSA.KODAL_GT) AS OD_AL
                           RIGHT JOIN ( (SELECT DBQAIME.KODALAN,
                                              SUM(DBQAIME.CEMIBORC) AS
                                                Su_CEMIBORC
                                       FROM   DBQAIME
                                       WHERE  ((
                                      ( DBQAIME.KODALAN ) = [INBUYERID] ))
                                       GROUP  BY DBQAIME.KODALAN) AS B_AL
                                        RIGHT JOIN DBALAN AS AL
                                          ON B_AL.KODALAN = AL.KODALAN)
                             ON OD_AL.KODAL_GT = AL.KODALAN
                    WHERE  (( ( AL.KODALAN ) = [INBUYERID] ))) AS A_B
                    INNER JOIN DBQAIME AS Q
                      ON A_B.KODALAN = Q.KODALAN)
          ON K_G.KODAL_GT = A_B.KODALAN)
       INNER JOIN (DBMAL AS M
                   INNER JOIN (DBSA AS SA
                               INNER JOIN (SELECT R2.KOD,
                                                  R2.VID,
                                                  R2.ADI
                                           FROM   DBRAB2 AS R2
                                           WHERE  (( ( R2.VID ) = 3 ))) AS R2
                                 ON SA.KODEMLNO = R2.KOD)
                     ON M.KODMAL = SA.KODMAL)
         ON Q.QAINOM = SA.QAINOM
WHERE  (( ( Q.QAINOM ) = [INSALEINVOICE] ))
ORDER  BY M.TIP,
          M.TAMADI; 
于 2012-05-16T12:43:14.380 回答