Ms access MS ACCESS-编辑和撤消SQL会导致错误

Ms access MS ACCESS-编辑和撤消SQL会导致错误,ms-access,Ms Access,我有一个保存在Access数据库中的查询(相当于ORACLE、SQL Server中的视图)。现在我需要在我的选择列表中添加另一列。但每当我更改SQL时,都会出现错误。假设我去掉一个逗号,然后把它放回去。我得到的错误有“From之后的语法错误”、“Join操作中的语法错误”。因此,如果我更改了任何内容,然后撤消更改,仍然会出现错误。我怎样才能避免这种情况 编辑:编辑前 SELECT A_B.ALICI, Q.QAINOM, M.TIP, Q.QATARIX, Q.CEMIBORC, R2.ADI

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

编辑:编辑前

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

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

[stuff here].
这会在编辑时导致错误

最简单的方法是使用记事本或类似的东西,替换[]。使用()并粘贴回

尝试:


将来,您可能会喜欢使用类似的方法来生成可读的问题。谢谢您的建议。但是语法非常错误,即时SQL格式化程序无法处理它。格式化使问题更容易被发现。
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;