- ベストアンサー
アクセスVBAのSQLについて
(1)テキストファイルに記述したSQL文のセットをVBAで実行するコマンドはありますか? (2)テーブルを作成する際の、DB指定は 「create table "DB名"."テーブル名"…」としたらよいでしょうか (3)"DB名". を省略できるのはどのような場合ですか? (4)Docmd.RunSQL "" で一度に複数のSQL文を実行できますか? よろしくお願いします。m(_ _)m
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
(1)ざっと4通りくらいあります。 DoCmd.RunSQL、CurrentDb.Execute、CurrentDb.OpenRecordset、 その他、クエリのSQLを動的に変更して、「クエリを開く」など 上記は目的が異なります。CurrentDb.OpenRecordset以外は実行型の SQLを実行する場合に使い、OpenRecordsetは結果を参照する場合に 使います。 (2)CREATE TABLE nnn (field1 CHAR(10),field2 INTEGER,・・・) 上記中、小文字の所が利用者が付ける名前です。制約やキーの 指定もあるんですが、書ききれません。 (3)Accessなんでしょ?"DB名"は不要です。 (4)できません。
その他の回答 (4)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
私の環境(Acc2000)では、 クエリにSQLを貼り付けて実行しても、 DoCmd.RunSql でも、 DAOでも、 ADOでも、 ADOで他のmdbに(Provider=Microsoft.Jet.OLEDB.4.0;で)作っても、 「値要求」は「いいえ」になります。 strSQL = "CREATE TABLE TEMP (Id CHAR(10) NOT NULL, NAME CHAR(50) NULL)" 変わりないと思うけど、ヌル指定もできます。 空白文字についてはこのへんが参考になるかな? http://support.microsoft.com/default.aspx?scid=kb;ja;217156
- nda23
- ベストアンサー率54% (777/1415)
ヘルプの検索で、"CREATE"と"TABLE"の間に空白入れました? "CREATETABLE"のように、空白を入れずに検索するとヒットしません。 ヘルプではCreate系メソッドを使え となっていますので、VBAで やってみてはどうでしょう。 http://www.accessclub.jp/dao/CreateTableDef.html NULL許可にしたい場合はFieldの下記プロパティを設定します。 Required ← False また、空文字列(NULLではない)を許可する場合は以下の通り。 AllowZeroLength ← True
お礼
ありがとうございます。 是非、試してみます。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
素人のコピペですが、 Microsoft Jet データベース エンジンは、Microsoft Jet データベース以外のデータベースでは CREATE TABLE 句や DDL (データ定義言語) ステートメントを使用できません。Microsoft Jet データベース以外のデータベースでは代わりに DAO の Create 系メソッドを使用してください。 構文 CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]]) [NOT NULL]指定がない場合はヌル可となります。
お礼
ありがとうございます。 私もご回答の構文は見たので試してみました。 その結果、NOT NULLを指定しない場合とNULLを指定した場合のどちらも構文エラーにはなりませんでしたが、空白許可がいいえになったままです。 何でそうなってしまうのか途方に暮れています。
- nda23
- ベストアンサー率54% (777/1415)
Accessお持ちなんでしょ? ヘルプ(F1)→"CREATE TABLE"→検索 とやれば出てきますけど・・・
お礼
ありがとうございます。 すみません、ヘルプを見てみたんですが、CREATE TABLEステートメントに関する内容が表示されないのです。
お礼
ありがとうございます。 (1)…試してみます。 (2)…すみません、教えてください。 私はフィールドにNULL値を許可したいのですが field data型 null,としても上手くできませんでした。 (テーブルを作ること自体はできました。) SQLの文法が間違っているとも思いませんが何がいけないのか教えていただけると幸いです。 (3)…了解しました。Accessでは1ファイル1DBなんですね。 (4)…了解です。