2012-03-12 13 views
1

を使用してクエリを使用しようとしたとき、私は、私はSQLでできる私はOLEDBMS Accessのは、SELECT TOP 0 *

"select top 0 * FROM [APPELLATION$] WHERE (((([libel_app] LIKE '%g') OR ([region] LIKE '%g')) OR ([couleur] LIKE '%g')))" 

でこのようなクエリを処理することができない理由の明確な答えをしたいと思い、エラーを与えますしかし、Excelファイルからデータを取得しようとすると、制限付きの単語を使用しているか、制限されているシンボルがいくつかあるというエラーが表示されます。私は制限された言葉と記号のリストを読んで、私の質問にそれらのどれも見つからなかった。私のプログラムは私にSQLリクエストを与えていますが、TOP Nの数値が0かどうかを調べることはできませんが、解決策がない場合は...

ありがとうございます。

+2

あなたがこれは本当に意味がありません?「トップ0を選択」から期待しない何結果... – Paddy

+0

それは私の使用のために意味がありませんが、私はそれで終わります私のcollegによって実装されたいくつかのメソッドのためそれはSQLのために働くので、私はoleDbを使っている唯一の人です。彼らはそれを変更しません。 – Oflocet

+0

「トップ0」を削除してもエラーなく動作しますか? –

答えて

2

あなたの同僚は、ハードコードされたフレーバー固有のSQLを、特に異なるタイプの接続で使用する場合は、最初にコードから削除する必要があります。

いくつかのフレーバーについて受け入れられた回答をIs there an ANSI SQL alternative to the MYSQL LIMIT keyword?で確認してください。 Excelはそこにはリストされていませんが、私はMsAccessと同じ構文を使用していますが、私はそれが奇妙なクエリでは全く違った動作をするのは驚きではありません。パディー氏はすでに、クエリーは意味をなさないと述べているので、避けるべきです。照合することによって、これを修正

醜い「0 TOP SELECT」と1(バンカーの丸い)以上の数値でなければなりませんTOP Nに(:(があった)ソフトウェアの純粋な地獄

+0

"MsAccessと同じ構文を使用すると確信しています" - 実際はAccessデータベースエンジンを使用しているため、同じ構文です。 – onedaywhen

0

Nを維持するようになります。

例えば

SELECT TOP 0.5 * FROM MyTable; -- rounds to zero = error 

SELECT TOP 0.6 * FROM MyTable; -- rounds to 1 = no problem