2007-12-31  Access 2007を使っていて気づいたこと

私はAccess初心者です。まだまだ知らないことがたくさんあります。Access 2007を使っていて気づいたことを話します。

グラフ機能が貧弱

いちばん気になったのは,グラフ機能の使い勝手の悪さです。Excelと比較するとかなり見劣りすると感じました。

Accessでグラフを扱うにはOLEオブジェクトのグラフ,あるいはピボットグラフのどちらかを利用します。「OLEオブジェクト」というのがクセモノなのです。Access本体にはグラフを描く機能はなくて,ヨソのアプリケーションにグラフ機能を外注しているような格好なのです。

この結果,Office 2007で採用された「リボン」がグラフの編集中には現れず,操作方法がちぐはぐな印象になっています。しかもExcelのグラフとは操作手順がなんだか違っていて,まるで異次元に迷い込んでしまったかのようなのです。

以下,まずいと思った点をまとめて。

  • OLEグラフとピボットグラフでは描けるグラフの種類に差がある。「等高線」を描きたかったのだが,ピボットグラフは等高線に未対応
  • グラフの入ったレポートをHTML出力するとグラフが図に変換されない(空欄になる)
  • グラフの入ったレポートをPDF出力すると線が劣化している

上記の事柄はおそらく仕様です。そうでなければ,これらの問題が放置されて良いわけがありません。すべては仕様なのです(びっくりマーク)。

クエリ機能が強力すぎる

なんとSQL文にVisual Basicの関数をそのまま使うことができます。(まだ十分に調査できていません。Visual Basicの関数を使っているのではなくて,単に名前を似せてあるだけなのかもしれません。)

たとえば書式を指定して日付を出力したり,日付から「時」だけを出力させたりしたいときには,「FORMAT」や「HOUR」といった関数を使うことができます。部分文字列を得たいときは,MIDやらLEFTやらRIGHTという関数を使えばよいのです。かなり強力だと思いました。

いちばん,すごいと思ったのは,なんとクロス集計するためのSQL文(TRANSFORM...PIVOT)が用意されているのです(びっくりマーク)。私,クロス集計やピボットテーブルが大好きなのです。「開いて畳んで,数かぞえて率にして」って操作が自由自在にできるからなのです。

(前回お話した小熊の分析にもTRANSFORM...PIVOTを使っています。)

何やらクロス集計の発見で,大喜びしてしまったようですね。私はこれまで商業データベースを使った経験がないので,外の世界を知りません。もしかしたらSQL ServerやOracleでは昔からできたことなのかもしれません。

問題は想定された使い方であるかどうか

コンピュータのソフトウェアを使うとき,肝に銘じなければならないことがあります。道具って想定された用途どおりに使わなければならないものなのです。思ったとおりの動作をしてくれないときは,たいてい想定外の使い方をしているからなのです。

Accessってもともと「商品の在庫管理」や「従業員の勤怠表」を作るためのアプリケーションのはずです。そんなものにどうして等高線のグラフが必要なのでしょうか。せいぜい棒や折れ線のグラフが描ければ十分でしょう。対してデータ処理は,かなり柔軟にできなければなりません。便利な関数が整備されている理由は,高度なデータ処理が想定されているからなのでしょう。

私は今回,Accessで小熊の生態を分析しました。一体だれがそんな使い方を想定するでしょうか。そんな人がいたとしたら,きっと変人に違いありません(ふめい)。もともとAccess以外でやっていたことを,そのままAccessでやらせようとするから不都合が発生するのです。

今後は問題の形を変えて,Accessに合った解決方法に作り込んでいこうと思います。