[PocketCafe トップ] [Pocketに書斎][Pocket日記] [Mail]

Pocket Access

-PC版のAccessとは全くの別物-

作成日 01/05/01

PocketWordは中途半端なテキストエディタ、PocketExcelはなかなか使える表計算ソフト、PocketPowerpointは使えそうで使えないプレゼンビューワ、PocketOutlookは予想通り使えないPIMもどき、と、それでオフィス・スイートかと疑いたくなるPocketOfficeですが、どうとも判断しがたいソフトが、H/PC Pro以降のWindowsCEには付属しています。今回紹介するのは、MS-Accessのサブセットである(らしい)、PocketAccessです。
先に断っておきます、PocketAccess。いいソフトなんですが、素人には、まず、歯が立ちません。難しいです。単体で使おうと思えば、データベースの基礎知識は、絶対に必要です。面倒なのが嫌な人は、PC版のアクセスを持っていれば、なんとかなります。でも、やっかいです。これだけ、WindowsCE関連のホームページが氾濫する中で、WindowsCE FANを除いてPocketAccessの話題が出なかったのは、ひとえにPocketAccessがくせ者だからです。でもまぁ、誰もやらないので、うちでレビュー書いてみます。

今回使うのは、マイクロソフトがサンプルとして提供している、Northwindです。といっても、ここで使っているのはAccess97に付属のNorthwind.mdbをCEに持っていったものなので、CEでのサンプルより、テーブルが若干増えています。

 図1.テーブル
テーブル・ビュー

PC版のアクセスと違って、ビューが極端に少ないですね。クエリー、フォーム、レポート、マクロ、モジュールといったビューがありません。代わりに、SQLプロシージャなるものがあります。

◆アクセスだと思ってはいけない

PC版のMS-Accessを使ったことがある人はご存じだと思いますが、Accessはよくできたソフトです。単体発売もされているし、一応、Officeとして、ExcelやWordとセット販売もされていますが(Professional Edition以上)、どちらかというとVisual Basic同様、開発ツールに位置するソフトであり、データベースをきちんと勉強していないと、ある程度以上は使えない、敷居の高いソフトでもあります。

ほとんどのデータベースソフトは、、縦(列)を項目、横(行)をレコードという形の表に見立てたファイルを扱うようになっています。アクセスでは、このファイルのことを、テーブルと呼んでいます。アクセスの便利なところは、条件を指定することで、条件にあったレコードだけを抽出するクエリーという機能や、テーブルの内容やクエリーの実行結果を照会しやすいよう、フォームというユーザー・インターフェイスが備わっているところです。

 図2.クエリー
クエリーによる、テーブルの結合
PC版アクセス97での、クエリー画面。複数のテーブルを結合したり、レコードを抽出する条件を指定しています。

クエリーは、データベースを詳しく知らない人でも、マウスでぴーっとドラッグしてテーブル同士の関連づけを指定できる、優れた機能であり、これがあるから素人でもアクセスが使えるのですが、残念ながら、PocketAccessには、この、クエリー機能がありません。

では、クエリーでやっているようなことをPocketAccessでしようと思えばどうしたらいいのでしょう?
実は、PocketAccessでは、レコードの結合や抽出などは、SQLを使って行います。

◆SQLプロシージャ

ここで、SQLプロシージャというビューを見てみましょう。

 図3.SQLビュー
SQLビュー

開くと、いくつかのアイコンがありますね。試しに、ひとつ、開いてみましょう。「飲料在庫」というアイコンをダブルクリックしてみると、次の図のような結果が得られます。

 図4.SQLプロシージャの実行結果
SQL実行結果

このまま、ツールバーの「SQL」ボタンを押すと、抽出の条件を見ることができます。押してみましょう……。

 図5.SQL文
SQLによる抽出条件指定画面

画面では見にくいけれど、次のような記述になっています。

SELECT 商品.商品コード, 商品.商品名, 商品.在庫, 商品.単価, 商品.梱包単位
FROM 商品区分 INNER JOIN 商品 ON 商品区分.区分コード = 商品.区分コード
WHERE (((商品.在庫)>0) AND ((商品区分.区分名)="飲料"))
ORDER BY 商品.商品コード;

なにやら、難しそうです。
これは、リレーショナル・データベースを操作するための言語のひとつで、SQLと呼ばれるものです。PocketAccessでは、後述するフィルタを除けば、SQLによるプログラミング以外、任意のレコードを抽出する手段がありません。

◆SQLは、PC版のAccessから取ってこれる

ここでぎょっとしたあなた。PC版のアクセスを持っていれば、自分でごりごりSQL文を書かなくても、アクセスにSQL文を作らせることができるので、ご安心いただきたい(逆に、PC版のアクセスないしはSQL文を発行できるデータベースソフトを持っていなければ、自分でSQL文を書かざるをえません)。
どうするかというと、PC版のアクセスで、クエリーを作ってしまうのである。その後、SQLビューに切り替えると、SQL文が表示されます(つまり、クエリーをつくると、内部ではSQL文を発行しているのです)。あとは、このSQL文をコピーして、WindowsCEに持っていき、SQLプロシージャに貼り付けてしまいます。

 図6.アクセスでSQL文をつくる
アクセスでSQL文をつくる

これだと、SQLがわからなくても、アクセスのクエリーを知っていたら、なんとかなる。ちなみに、図5のややこしいSQL文も、図2のクエリーからSQL文を発行して作りました。

◆便利なフィルター機能

ある項目(列)を選択し、指定した条件のレコードのみ表示するフィルタ機能があります。エクセルのオートフィルタみたいなものです。ツールバーの「フィルタ」ボタンを押して、項目を選び、フィルタリングしたい値を入力します。

 図7.フィルター画面
フィルター画面

すると、レコードの内容が、フィルタリングしたものだけになります。

 図8.フィルター結果
フィルター結果

フィルタリングを解除するには、もう一度フィルタのウインドウを呼び出して、「すべてを表示」ボタンを押せば、元に戻ります。
ちなみにこのフィルタ、テーブルでも、SQLプロシージャでも使うことができます。


とりあえず、駆け足で追ってみましたが、一回ではすべてを網羅し切れません。次回は、SQL文の説明をくわえながら、レコードの追加や削除、PC上のアクセスmdbファイルとの同期のことなどに触れたいと思います。

[戻る]




[PR]湘南美容外科で働きませんか?:全国19院。医師、看護師ほか募集中