Access総合相談所 其の23 at BSOFT
Access総合相談所 其の23 - 暇つぶし2ch703:名無しさん@そうだ選挙に行こう
10/07/11 06:21:34
ACCESSの作成するSQLで [ ] が付くけど、
これってどういう意味なんでしょうか?

[ ] を付けないSQL構文をベタ打ちしていたのですが、
何かの拍子にクエリ実行時に応答がなくなるようになりました。
ACCESSのGUI機能で、テーブルから条件を抽出するようにすると
問題なかったので、自動生成されたSQL構文を見ると[ ]がついていました。

704:703
10/07/11 06:29:59
SELECT * FROM TEST WHERE (FLUG=1)
のようなSQL文が自動生成されたSQLでは
SELECT TEST.* FROM TEST WHERE (([TEST].[FLUG])=1)
のようになっています。
クエリの応答がなくなる条件を調べるため
SELECT TEST.* FROM TEST WHERE ((TEST.FLUG)=1)や
SELECT * FROM TEST WHERE ((TEST.FLUG)=1)
とすると応答がなくなりました。
SELECT TEST.* FROM TEST WHERE (([TEST].[FLUG])=1)
SELECT * FROM TEST WHERE (([TEST].[FLUG])=1)
では、すぐに結果が取得できました。
[ ] に何か意味があるようです。ADO等でJET DB Driver経由で
MDBを参照する際にも、上記の応答がないクエリを参照すると
例外が発生しますが、[ ] を付けるだけで動作するようになりました。

705:名無しさん@そうだ選挙に行こう
10/07/11 18:50:53
確かフィールドやテーブル名ってことを明確にする役割だったような

706:名無しさん@そうだ選挙に行こう
10/07/11 19:12:14
>>703
実際にクエリを処理するのはJetなどの各種データベースエンジン。
ドライバは、Accessで発行したSQL句をDBエンジンが解釈できるように
翻訳して渡す。

問題はDBエンジンやドライバ毎に個性(癖・バグ・仕様)があるので
SQL句がDBエンジンに解釈不能な形で渡ってしまう可能性がある事。
(特に英語圏以外では…)
フィールド名やテーブル名を[ ]を使って明示する事で、こういった問題を
減らすことができる。

※古いバージョンのAccessなんかだと、特定の漢字を使うとエラーに
なったりした経験あり。その場合でも、[ ]を付ければ回避できた。

707:名無しさん@そうだ選挙にいこう
10/07/12 06:49:00
access2010ライセンスを購入して
vlscみたら2003のプロダクトキーが無い…
電話したら教えてくれるのですか?

708:名無しさん@そうだ選挙にいこう
10/07/13 00:08:46
>>707
2010発表以降に新規購入のOfficeから、VLSCでは2003系のVL Keyは表示されなくなっている。
Volume License Call CenterにTELして手続きすれば、VL Keyをメールで発行してもらえる。
受付は平日の日中のみ(昼休み不可)。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch