2

これは以前に尋ねられたかもしれませんが、関連する答えがどこにも見つからないようです。

数週間前に Access (2003) で長いクエリをいくつか書きました。今日それらのクエリを使用したかったのですが、それらが切り詰められていることがわかりました。クエリは本来どおりに開始され、途中のどこかAS [%$##@_Alias]で、残りが欠落しています。

両方のクエリの長​​さはわずか 100 文字で、Access で許可されている制限をはるかに下回っています。

両方のクエリの構造は次のようになります

SELECT Some calculated fields with a few IIF statements
FROM 
(
    SELECT Some fields calculated with lots of IIF statement
    FROM joined table
    WHERE some condition
)
ORDER BY Some fields

私がしていないことは、Access に特に厳しい要求をするものではありません。では、なぜこれが起こるのですか?

今日本語のテキストを入れたことを非難しないでください。次の部分は純粋に参照用です。私の実際の(切り捨てられた)クエリの1つは次のようになります。

SELECT 
    管理番号, 
    種別, 
    IIF(種別TYPE='', OTHER種別TYPE, IIF(種別TYPE='その他','その他' & OTHER種別TYPE,種別TYPE)) AS TYPE
FROM [
    SELECT 
        管理番号,
        IIF(建物か設備_建物,'建物',IIF(建物か設備_設備, '設備', '種別なし')) AS 種別,
        IIF(建物か設備_建物,IIF(建物用途_戸建住宅,'戸建住宅',IIF(建物用途_共同住宅,'共同住宅',IIF(建物用途_教育施設,'教育施設',IIF(建物用途_庁舎,'庁舎',IIF(建物用途_事務所,'事務所',IIF(建物用途_工場,'工場',IIF(建物用途_倉庫,'倉庫',IIF(建物用途_店舗,'店舗',IIF(建物用途_物置小屋,'物置小屋',IIF(建物用途_車庫,'車庫',IIF(建物用途_農作小屋,'農作小屋',IIF(建物用途_その他,'その他')))))))))))),
        IIF(建物か設備_設備,IIF(設備種別_物置,'物置',IIF(設備種別_駐車場,'駐車場',IIF([設備種別_運動場/庭等],'運動場/庭等',IIF(設備種別_電気設備等,'電気設備等',IIF(設備種別_畜舎など,'畜舎など',IIF(設備種別_ビニールハウス等,'ビニールハウス等',IIF(設備種別_その他,'その他'))))))),'')) AS 種別TYPE,
        '(' & REPLACE(REPLACE(TRIM(建物用途_その他記載欄),'(',''),')','') & ')' AS OTHER種別TYPE
    FROM 
        T_メイン INNER JOIN T対象 ON T_メイン.管理番号=T対象.調査番号]. AS [%$##@_Alias];

編集

私は両方のクエリを再確認しましたが、私が言ったのとは異なり、そのうちの 1 つだけが切り捨てられました。もう1つは無傷です。非常に奇妙...

4

1 に答える 1

2

サブクエリにエイリアスを割り当てないと、Access のクエリ デザイナーが割り当ててくれることに気付きました。そして、それらのエイリアスはあなたが引用したものに似ています[%$##@_Alias]. ただし、そのようなエイリアスを追加したときに SQL テキストの一部が破棄されることに気づいていません。したがって、この提案は一筋縄ではいかないかもしれませんが、たとえばFROM ( ... ) AS sub、独自のエイリアスを割り当ててみて、クエリ デザイナーが残りの SQL テキストを保持するかどうかを確認してください。

于 2013-02-07T05:15:21.910 に答える