- ベストアンサー
ACCESSでのSQL文
ACCESS2000を使用しています。 クエリをデザインビューから作成し、SQLビューで確認すると、例えば、 SELECT [test].[日付],[test].[トップ] FROM test; というような文章が作成されますが、ここで手動でSQL文に SELECT 日付,トップ FROM test; というふうに変更して実行した場合、[]を外したことによってエラーとなってしまう列が発生します。このエラーになる列とならない列が発生する原因をどなたかご存知ないでしょうか? ACCESSをデータベースとして他ツールによってデータを引き出すんですが、SQL文は自動作成されるので手で[]を入力しなければならないんです。 以上、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他ツールの予約語を列名に指定するとエラーになってしまいます。予約語を列名と認識させるのに[]を使うわけです。 ASPでアクセスする場合はASPの組み込みオブジェクトであるUserやServerやItem等がこれに相当します。
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>ただ、”1位”、”2位”というのが予約語になるんでしょうか?数字が入っているからなんでしょうかね? 数字が入っているからではなく、先頭が数字だからです。 他には、演算子となりうる文字+、-、*、/、が含まれていたり、(や、)、の括弧、その他の記号を使っていたりすると[]でくるむ必要があります。
お礼
なるほど、解りました。 ありがとうございます。
- taknt
- ベストアンサー率19% (1556/7783)
テーブルをひとつしか使わない場合は、エラーにならないでしょう。 テーブルがひとつだけ、たとえば test のテーブルだけでもエラーが出る場合があったら、教えてください。
補足
回答ありがとうございます。 驚きのようですが、1つのテーブルを使用しているのにホントにエラーが出てしまうんです。 もし、お時間がございましたらいろいろ検証していただけますか?
- baboooo
- ベストアンサー率35% (17/48)
クエリで2つ以上のテーブルを結合している場合、 両方に同じ列名が存在するときにテーブル名を指定しないと エラーになります。 どのようなエラーが出るのかわかれば解決につながるのですが とりあえず、考えられるのはこんなことです。
補足
回答ありがとうございます。 エラ-の内容は”演算子がありません"です。 あと、クエリ元のテーブルは1つのテ-ブルです。
補足
回答ありがとうございます。 実際の列名を挙げますと、エラーの出る列名が”1位”、”2位”で出ないのが”日付”、”順位”です。 hidebu-さんに指摘されていろいろ試してみたところ、エラーの出ない列にはSQLビューに変換した際、[]がつけられていないことに気づきました。 おそらく、hidebu-さんの内容で間違いないと思います。 ただ、”1位”、”2位”というのが予約語になるんでしょうか?数字が入っているからなんでしょうかね?