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をメールで発行してもらえる。
受付は平日の日中のみ(昼休み不可)。