知方号

知方号

ACCESS VBA テーブルを作成する方法

ACCESSのデータ格納の基本単位はテーブルです。

ACCESSの画面操作でテーブルを作成するのは簡単ですが、VBAのプログラム内で新規テーブルを作成したい場合はどうすればよいでしょうか。ACCESS VBAの基本機能ではテーブルを作成する機能がありません。

しかし、SQLを使用することでVBAから新規のテーブル作成が可能です。

今回は、SQLを使ってテーブルを作成する方法についてご紹介します。

こんにちは。はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。この記事ではACCESSでのVBAの使い方をご紹介していきます。

目次

1 VBAでのテーブル操作2 SQLを使った新規テーブル作成プログラム3 既存のテーブルから新しいテーブルを作成するプログラムVBAでのテーブル操作

VBAを使いこなしてくると、DLookup関数やDsum関数でVBA側からテーブルの値を取得することも多くなるでしょう。そうなると逆にVBAからテーブルを新しく作成するというケースも出てきます。

しかし、VBAに標準で用意された関数では、テーブルから値を取得したり、クエリやフォームの操作はできるものの、テーブルを作成できる関数がありません、

VBAから直接テーブルを操作するためには、SQLというデータベース言語の利用が必要になります。

SQLを使うと、レコードの新規作成、更新、抽出、削除、グループ化など様々な操作ができます。

Microsoft SQL ServerやOracleなど、多くのデータベースソフトウェアでもサポートされており、グローバルで一般的なデータベース操作言語と言えます。今回はADOとSQLを使ってテーブル作成をします。

SQLを使った新規テーブル作成プログラム

では実際に、SQLを使ってテーブルを作成するプログラムを見てみましょう。

DoCmd.RunSQL "CREATE TABLE T_create1 (ID LONG PRIMARY KEY,日付 DATE);"

ACCESSでSQLを使用する場合は、DoCmd.RunSQLメソッドを利用します。

DoCmd.RunSQLのあとの””で囲われた部分が実行されるSQL文です。

テーブルを作成する際には、CREATE TABLEという構文を使用します。上記の例では、「T_create1」というテーブル名で、フィールドにIDと日付があるテーブルを作成する、という命令をしています。

ID、日付の後にある、LONGやDATEはデータ型を指定しています。LONGは数値型(長整数型)、DATEは日付/時刻型を指定します。

また、PRIMARY KEYは主キー設定の指定になります。

上記のプロシージャを実行すると、下記のテーブルが作成されます。

デザインビューで見ると下記の設定で、指定通りのデータ型になっていることがわかります。

なお、SQL文には他にも以下のような種類の構文があります。

SELECT ・・・ FROM ・・・レコードの抽出UPDATE ・・・ SET ・・・ レコードの更新INSERT ・・・ INTO ・・・レコードの追加DELETE ・・・ from ・・・ レコードの削除既存のテーブルから新しいテーブルを作成するプログラム

上記で説明したのは、最も基礎的なテーブル作成の方法ですが、ACCESSを使用していてVBAでテーブルを作成する際は、この方法はあまり使用しません。ACCESS自体がデータベースソフトウェアなので、既存のテーブルやクエリを基に新しいテーブルを作成するケースのほうが多いのです。

そこで、既存のテーブルを基に新しいテーブルを複製する方法もご説明します。

DoCmd.RunSQL "SELECT * INTO T_create2 FROM TRN_売上;"

こちらも同様に DoCmd.RunSQL を使用します。

SQL文の内容は、TRN_売上テーブルから( FROM TRN_売上 )、すべてのフィールドを選択し( SELECT * )、T_create2テーブルを作成する( INTO T_create2 )というものです。

この命令を実行するとテーブルが複製されます。もし、テーブルのフィールドフォーマットのみを使用したいので、レコードは不要という場合には、上記の後に

DoCmd.RunSQL "DELETE* from T_create2;"

と、DELETEでレコードを削除する命令を実行すれば問題ありません。

なお、こうしたレコード操作を行うと、実行時にACCESSの画面上では下記のような確認メッセージが表示されます。

VBAで自動実行している際は、ユーザーにこうした画面を見せたくないというケースも多いでしょう。

そんな時はDoCmd.SetWarningsを使用することでメッセージの表示を回避できます。

ここまでの一連の流れをまとめてコードで記載すると下記のようになります。

DoCmd.SetWarnings False DoCmd.RunSQL "SELECT * INTO T_create2 FROM TRN_売上;" DoCmd.RunSQL "DELETE* from T_create2;" DoCmd.SetWarnings True

最初の「 DoCmd.SetWarnings False 」でメッセージ表示をしないようにしたうえで、SQLによるテーブル操作を行い、最後に「 DoCmd.SetWarnings True 」でメッセージ表示を元に戻しています。

以上、テーブルを作成する方法について紹介しました。

ACCESSを使いこなせば、業務の効率化や自動化が実現できます。しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。ご興味のある方は下記のサービス一覧をご覧ください。

最後までお読みいただき、ありがとうございました。

FacebookXHatenaPocket関連記事ACCESS VBEのフォント設定方法 2024年10月10日ACCESS VBA DoCmd.ApplyFilterの使い方 2024年10月8日ACCESS VBA フォーム名を変数で指定する方法 2024年9月26日ACCESS VBA レポート起動時イベントの発生する順番 2024年9月17日ACCESS VBA フォームのボタンからモジュールを実行する方法 2024年9月6日ACCESS VBA 標準モジュールとは 2024年8月25日ACCESS VBA Privateプロシージャとは 2024年8月20日ACCESS VBA Publicプロシージャとは 2024年8月19日ACCESS VBA ADOでUpdateをする際の2つの記述方法 2024年8月14日ACCESS VBA Functionプロシージャとは 2024年8月13日

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。