2013-02-07 79 views
2

這可能以前曾被問過,但我似乎無法在任何地方找到任何相關答案。訪問查詢是否自動截斷?

幾個星期前,我在Access(2003)中寫了幾個長查詢。我想今天使用這些查詢,並發現它們已被截斷。查詢開始,因爲它應該和其中一半的地方說AS [%$##@_Alias]和其他缺失。

這兩個查詢都只有幾百個字符長,遠遠低於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 

我並不特別苛刻的訪問,當然不應該導致其截斷憤怒查詢。那麼爲什麼會發生?

請不要抨擊我現在寫日文文本,下一部分是純粹供參考。我的一個實際(截)查詢看起來是這樣的:

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]; 

編輯

我都複查我的查詢,不像我說的只是其中之一得到了截斷。另一個是完好的。非常奇怪...

+0

你說得對,如果我給它一個別名,它會正常工作。看起來像保存查詢時需要別名,即使查詢執行時不是這樣。你能否重寫這個答案? –

+0

順便說一句,你有沒有注意到自動別名添加後你的一個查詢被縮短? –

+0

不,我沒有看到我的SQL文本的任何部分在這種情況下被丟棄。但是,這並不是很有效,因爲我養成了習慣性地分配我自己的別名的習慣。也許我可能會看到它,如果我讓設計師爲我更頻繁地添加別名。我真的不知道。 :-( – HansUp

回答

2

我注意到,如果我不爲子查詢分配別名,Access的查詢設計器將爲我指定一個別名。這些別名與你引用的別名類似,[%$##@_Alias]。但是,我沒有注意到它添加了這樣的別名時會丟棄我的SQL文本的任何部分。因此,儘管這個建議可能是一個很長的嘗試,但請嘗試分配您自己的別名,例如FROM (...) AS sub,然後查看查詢設計器是否保留了其餘的SQL文本。

+1

+1我同意,最佳做法是別名派生表。如果使用倍數,事情會變得更簡單。 –