回答編集履歴

2

追記

2018/02/04 05:42

投稿

hatena19
hatena19

スコア33753

test CHANGED
@@ -31,3 +31,43 @@
31
31
  DoCmd.RunSQL "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ さらに追記
38
+
39
+ ---
40
+
41
+ DoCmd系の命令はUI操作になります。ただ、直接テーブルを作成するコマンドはないので、DoCmd.RunSQL でUIからSQLを実行しています。
42
+
43
+ 簡単に記述できるのは、SQLだからです。
44
+
45
+
46
+
47
+ DAO経由でSQLを実行することも可能です。下記になります(再描画が必用になります)。
48
+
49
+
50
+
51
+ CurrentDB.Execute "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
52
+
53
+ Application.RefreshDatabaseWindow
54
+
55
+
56
+
57
+ SQLの場合、テーブルデザインの変更は [ALTER TABLE ステートメント](https://msdn.microsoft.com/library/78e6c92c-e88c-e55f-6b89-435360c166a6%28office.15%29.aspx) や [CREATE INDEX ステートメント](https://msdn.microsoft.com/library/c5919ef4-a08d-df06-7078-5331adbcb45c%28office.15%29.aspx) でできます。
58
+
59
+
60
+
61
+ [Access SQL を使用してテーブルの設計を変更する](https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/modify-a-table-s-design-using-access-sql)
62
+
63
+
64
+
65
+ ただし、SQLでは規定されていない、Accessのテーブルに独自に拡張されたプロパティは設定することはできません。
66
+
67
+ 例えば、書式プロパティなどは、SQLではできないので、DAO(or ADOX)のオブジェクトを使って設定する必用があります。
68
+
69
+ `Set prp = fld.CreateProperty("Format", dbText, "ggge/mm/dd")`というように。
70
+
71
+
72
+
73
+ 結局、書式とか定形入力とかのプロパティを設定したい場合、DAO(ADOX)ですることになりますね。

1

サンプルコードの追加

2018/02/04 05:42

投稿

hatena19
hatena19

スコア33753

test CHANGED
@@ -13,3 +13,21 @@
13
13
 
14
14
 
15
15
  DAOでの操作はAccessがなくてもExcelやその他のアプリからでも可能ということからも、DAO と Accessアプリケーションは別物ということが分かりますね。
16
+
17
+
18
+
19
+ 追記
20
+
21
+ ---
22
+
23
+ AccessアプリケーションのUIから、今回と同じテーブルを作成するなら下記のコードになります。
24
+
25
+ この場合、実行後すぐにナビゲーションウィンドウにテーブルが表示されます。
26
+
27
+
28
+
29
+ ```vba
30
+
31
+ DoCmd.RunSQL "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
32
+
33
+ ```