目次
すでにデータがあるテーブルにデータを追加する
こんにちは。伊川(@naonaoke)です。
今回は、すでにデータベースがありますが、そのデータベースにさらにデータを追加することを紹介します。
Excelで実行するなら、VLOOKUP関数等で、追加するデータのみを探してからコピーします。
ACCESSはそんな面倒なことをしなくてもボタン1つでできます。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から、下記の依頼を受けました。
・現在あるデータベースに、さらにデータを追加してほしい。
・ACCESSを利用すること。
・パソコンスキルがない人でも操作できるようにシステム作成してほい。
なにか良い方法はないだろうか?
解決策
・不一致クエリを作成する
・追加クエリを作成する
不一致クエリとはなにか?
読んで字のごとく、このクエリを使いますと、2つのテーブルを比較して足りないデータを自動的に抽出します。
このように、2つのテーブルがあります。
MT_売上は、絶対に削除してはいけないテーブルです。(神棚的な存在です)
m_売上追加は、削除しても平気なテーブルです。
この2つのテーブルは、必ずテーブルの構造を同じにしなければなりません。
同じ構造のテーブルを作成する
上の図のように、MT_売上をコピーします。
上の図のように、MT_売上を貼り付けようとすると、ウィンドウが表示されます。
テーブルの構造のみを選択します。
そうすると、MT_売上のテーブルの構造がコピーされ、空のテーブルが作成されますので、名前を変更すると完成です。
不一致クエリを作成
作成手順 その1
「作成」⇒「クエリウィザード」⇒「不一致クエリウィザード」の順に選択します。
作成手順 その2
m_売上追加を選択します。(データが多いテーブルと憶えてください)
作成手順 その3
2回目に選択するテーブルは、MT_売上です(テータの少ないテーブルと憶えてください)
作成手順 その4
m_売上追加にあって、MT_売上にないものは、No13~No20までです。
このような場合に、ID(オートナンバー)型が役立ちます。
しかも、このIDは主キーなので、重複がありません。
作成手順 その5
IDのほかに、抽出したいフィールドを選択しまし。この場合は、全部の選択になります。
作成手順 その6
完了をクリックすると完成です。
No13~No20までが抽出されました。
追加クエリを作成
詳しくは、上の記事を確認してください。
追加クエリの概要だけを抜粋して説明します。
上の図のように、追加クエリを作成します。
「追加Q_MT_売上追加」という名前をつけて保存しました。
ボタン1つをクリックしてデータを追加する。
作成手順 その1
上の図のような簡単なフォームを作成します。
作成手順 その2
レコード追加のボタンにVBAのコードを仕込みます。
Private Sub コマンド4_Click() DoCmd.SetWarnings False DoCmd.OpenQuery "追加Q_MT_売上追加" DoCmd.SetWarnings True MsgBox "データ追加完了" DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM m_売上追加" DoCmd.SetWarnings True MsgBox "m_売上追加削除完了" MsgBox "すべて完了しました" End Sub
このコードについては、上の記事で説明していますので、不安な方は、もう一度、読んでください。
実行結果
上の図のように、MT_売上には、No13~No20までのデータが追加になりました。
m_売上追加は自動的に削除になりました。
まとめ
今回は、クエリとVBAの組合せでした。
VBAを勉強している人は、フォルダを作成して、失敗したファイルを保存しておきましょう。
ExcelでVBAを使うときは、結構難しいですが、ACCESSの場合は、簡単なVBAのコードで、結構、何でもできます。ただし、簡単に操作をしようと思ったら、必ず、主キーを設定してください。
主キーについて、分からない人は、ぜひ、上の記事を読んでください。
サンプルファイルはNo34です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。