プロが教える店舗&オフィスのセキュリティ対策術

(1)テキストファイルに記述したSQL文のセットをVBAで実行するコマンドはありますか?
(2)テーブルを作成する際の、DB指定は
「create table "DB名"."テーブル名"…」としたらよいでしょうか
(3)"DB名". を省略できるのはどのような場合ですか?
(4)Docmd.RunSQL "" で一度に複数のSQL文を実行できますか?
よろしくお願いします。m(_ _)m

A 回答 (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)できません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
(1)…試してみます。
(2)…すみません、教えてください。
私はフィールドにNULL値を許可したいのですが
field data型 null,としても上手くできませんでした。
(テーブルを作ること自体はできました。)
SQLの文法が間違っているとも思いませんが何がいけないのか教えていただけると幸いです。
(3)…了解しました。Accessでは1ファイル1DBなんですね。
(4)…了解です。

お礼日時:2008/12/18 11:41

私の環境(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=k …
    • good
    • 0

ヘルプの検索で、"CREATE"と"TABLE"の間に空白入れました?


"CREATETABLE"のように、空白を入れずに検索するとヒットしません。
ヘルプではCreate系メソッドを使え となっていますので、VBAで
やってみてはどうでしょう。
http://www.accessclub.jp/dao/CreateTableDef.html

NULL許可にしたい場合はFieldの下記プロパティを設定します。
Required ← False
また、空文字列(NULLではない)を許可する場合は以下の通り。
AllowZeroLength ← True
    • good
    • 0
この回答へのお礼

ありがとうございます。
是非、試してみます。

お礼日時:2008/12/21 16:07

素人のコピペですが、



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]指定がない場合はヌル可となります。

参考URL:http://office.microsoft.com/ja-jp/access/HP01032 …
    • good
    • 0
この回答へのお礼

ありがとうございます。
私もご回答の構文は見たので試してみました。
その結果、NOT NULLを指定しない場合とNULLを指定した場合のどちらも構文エラーにはなりませんでしたが、空白許可がいいえになったままです。
何でそうなってしまうのか途方に暮れています。

お礼日時:2008/12/19 21:04

Accessお持ちなんでしょ?


ヘルプ(F1)→"CREATE TABLE"→検索 とやれば出てきますけど・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
すみません、ヘルプを見てみたんですが、CREATE TABLEステートメントに関する内容が表示されないのです。

お礼日時:2008/12/18 23:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!