質問するログイン新規登録

回答編集履歴

2

追記

2018/02/04 05:42

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -14,4 +14,24 @@
14
14
 
15
15
  ```vba
16
16
  DoCmd.RunSQL "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
17
- ```
17
+ ```
18
+
19
+ さらに追記
20
+ ---
21
+ DoCmd系の命令はUI操作になります。ただ、直接テーブルを作成するコマンドはないので、DoCmd.RunSQL でUIからSQLを実行しています。
22
+ 簡単に記述できるのは、SQLだからです。
23
+
24
+ DAO経由でSQLを実行することも可能です。下記になります(再描画が必用になります)。
25
+
26
+ CurrentDB.Execute "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
27
+ Application.RefreshDatabaseWindow
28
+
29
+ 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) でできます。
30
+
31
+ [Access SQL を使用してテーブルの設計を変更する](https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/modify-a-table-s-design-using-access-sql)
32
+
33
+ ただし、SQLでは規定されていない、Accessのテーブルに独自に拡張されたプロパティは設定することはできません。
34
+ 例えば、書式プロパティなどは、SQLではできないので、DAO(or ADOX)のオブジェクトを使って設定する必用があります。
35
+ `Set prp = fld.CreateProperty("Format", dbText, "ggge/mm/dd")`というように。
36
+
37
+ 結局、書式とか定形入力とかのプロパティを設定したい場合、DAO(ADOX)ですることになりますね。

1

サンプルコードの追加

2018/02/04 05:42

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -5,4 +5,13 @@
5
5
  はい、そうだと思います。
6
6
  DAOでの操作と、AccessアプリケーションのUIでの操作は、別系統ののものですので、DAOでの操作をAccessのUIに反映させるには、再読込、再描画等を実行して同期させる必用があります。
7
7
 
8
- DAOでの操作はAccessがなくてもExcelやその他のアプリからでも可能ということからも、DAO と Accessアプリケーションは別物ということが分かりますね。
8
+ DAOでの操作はAccessがなくてもExcelやその他のアプリからでも可能ということからも、DAO と Accessアプリケーションは別物ということが分かりますね。
9
+
10
+ 追記
11
+ ---
12
+ AccessアプリケーションのUIから、今回と同じテーブルを作成するなら下記のコードになります。
13
+ この場合、実行後すぐにナビゲーションウィンドウにテーブルが表示されます。
14
+
15
+ ```vba
16
+ DoCmd.RunSQL "CREATE TABLE Sample1(F1 INT, F2 DATE, F3 INT);"
17
+ ```