hands-typing_925x

クエリーとテーブルだけで良い

Access入門の本などを見ると、「データベースとは」とか最初にいきなり書いてあって、すぐやる気が萎えてしまいますよね。
最初に手作業でテーブル作ったりとか。準備として必要なんですが初心者には意味がわからないんですよね。


確かに全部大事です。後から思えばそれはわかります。
でも、すぐおいしくないんです(笑)


すぐおいしいとは何か。
「データ加工をラクにやりたい」ということです。



情シスの仕事で一番重いのは、データ加工です。


Accessでデータ加工する機能はクエリーです。
テーブルはExcelと見た目も似ていますし、まずはデータの保存場所という認識で良いと思います。

私は情シスレベルならクエリーだけ覚えれば良いと思います。
Accessで一番難しいところではあるのですが・・・


クエリーをマスターすれば、
フォームやレポートなどAccessの他の機能を使う際にも役に立ちます。
その後、データベースの理解にもつながると思います。

データベース全体を軽く理解するには、Accessはうってつけのソフトです。


Excelでいいじゃん、と一見思いますが、Accessにははっきりと良さがあります。
それを以下に紹介します。

同じ処理を何度もすばやくできる

Excelで例えば以下の処理をするとします。

元データ → ①余計な列の削除 → ②余計な行の削除 → ③データの並び替え → 必要なデータ

最終ステップまで行った時に、①の処理が間違っていたことに気づいたとすると、最初からやり直しになります。もう削除した列はありませんから。
元データのバックアップがなければ、その取得から始めることになります。

Excelマクロを組むなら別ですが、
それでもマクロ実行前に元データを保存しておかないと、データの再取得からやり直しです。


Accessだと、
処理内容が間違っていれば、クエリーの定義だけを修正し、再実行するだけで良いのです。
元データを直接変更しているわけではないので、元データも残っています。
(追加・更新・削除クエリーは除く)


元データの内容や件数が変わったとしても、列が変わらなければ、
データ取り込みをし直して、再度クエリーを実行するだけです。

同じ処理を定期的にやる場合は、再利用もできます。

グループ集計がラク

Excelでもピボットテーブルなどを使えば集計はできると思いますが、
慣れればAccessのほうがラクです。

特にグループ集計はExcelより分かりやすいと思います。


例えば基幹システムの単価マスタは、
商品コード、反映日、単価のような項目があり、価格変更に対応できるようになっています。

データとしては、
商品コード    反映日         単価
A001             2017/01/01   100
A001             2017/02/01   120
A001             2017/03/01   110
A002             2017/01/01   200
A002             2017/02/01   250
A003             2017/01/01   300

のようになっています。


「各商品の最新の単価だけを知りたい」という要件があった場合、
Accessでは、

商品コード   反映日          単価
A001             2017/03/01   110
A002             2017/02/01   250
A003             2017/01/01   300

をすばやく取得することができます。

これ単純そうに見えて、Excelで実現するにはなかなか大変な処理になるはずです。

※Accessの場合も、SQLで副問い合わせを記述しないと、クエリー1つでは取得できません。

GUIだけですと、クエリー2つを組み合わせる必要があります。
ただ情シスレベルならこれで良いのです。
Excelでピボットテーブルを作って、データのコピペを繰り返すよりマシです。

他データの参照がラク

担当者マスタからVLOOKUPで担当者名と部門コードを引っ張って、
引っ張った部門コードを部門マスタにまたVLOOKUPでぶつけて部門名を取って・・・
とVLOOKUPを何回も繰り返すと「何やってたんだっけ」となります。

Accessならテーブルの結合という機能で、
複数のマスタを参照して、キーに一紐づくデータを持ってくることができます。

CSVが扱いやすい

基幹システムからデータをエクスポートすると、CSV形式で出てくることがあります。

CSVファイルはダブルクリックすればExcelで開けますが、
数値データの頭に0が埋められている場合は、0が落ちるなどしてしまうことがあります。

それに気づかずデータを加工して上書き保存すると、書式が変わった状態で保存されてしまいます。
それを基幹システムにインポートしようとしても、当然エラーになります。
苦労して加工したのに、泣きそうになりますね。

Excelを単体で起動して、テキスト形式で開けば書式を維持したままにできますが、
開くたびに書式設定をしなければなりません。
面倒で仕方ないです。


Accessですと、書式を変えずにそのまま取り込むことができます。
また、最初に取り込んだ書式(データ型)を定義として保存できるので、
2回目以降の処理が格段に速くなります。

CSVではなく、Excelデータ(xls、xlsxファイル)の取り込みですと、
データ型も意識せずにそのままAccessに取り込むことができます。



Accessのクエリーを使えば、1000倍単位で爆発的に効率が上がります。

ルーティン作業なら、作業が続く限り恩恵を受けられます。
累積時間で考えると、ものすごい効率化になります。

私は、5分単位の細かい作業をAccessで効率化して積み重ね、
1日何時間もの時間的余裕を得ました。

仕事が集中したときに、Accessは私を強力に助けてくれます。


ただしAccessを使う際の注意点があります。

作業前には必ずデータのバックアップを取るようにしてください。
ミスをしたときの損害も爆発的ですから(笑)


最初は選択クエリーを使うことが多いと思うので、
その間はデータを壊すことは無いので大丈夫ですが、

・追加クエリー
・更新クエリー
・削除クエリー

を使うようになったら、お気をつけください。


私は、データ取り込みの際に、取り込み先のテーブルをバックアップするようにしています。
そこもマクロやVBAで記述して、自動化しています。



私は新卒で入った会社でAccessの業務アプリ開発を2年くらいやっていました。
当時はそれでも商売になったんです(笑)

今の世の中では、Accessだけを売りにベンダーで生きていくことは難しいですが、
情シスで使うには十分です。
Accessは画面も作れますし、自分用のコンパクトなアプリケーションを作るには最適です。


Accessという道具を使って、つまらない単純作業はさっさと終わらせましょう。
できた時間で未来の仕事を前倒しでこなすもよし、一息つくもよしです。

関連記事: