2

Access データベースに保存したクエリ (ORACLE、SQL Server のビューに相当) があります。ここで、選択リストに別の列を追加する必要があります。しかし、SQL を変更するたびにエラーが発生します。コンマを 1 つ削除して元に戻すとします。「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 に答える