
[PocketCafe トップ] [Pocketに書斎][Pocket日記] [Mail]
Pocket Access
-PC版のAccessとは全くの別物-
作成日 01/05/01
今回使うのは、マイクロソフトがサンプルとして提供している、Northwindです。といっても、ここで使っているのはAccess97に付属のNorthwind.mdbをCEに持っていったものなので、CEでのサンプルより、テーブルが若干増えています。

PC版のアクセスと違って、ビューが極端に少ないですね。クエリー、フォーム、レポート、マクロ、モジュールといったビューがありません。代わりに、SQLプロシージャなるものがあります。
◆アクセスだと思ってはいけない
PC版のMS-Accessを使ったことがある人はご存じだと思いますが、Accessはよくできたソフトです。単体発売もされているし、一応、Officeとして、ExcelやWordとセット販売もされていますが(Professional Edition以上)、どちらかというとVisual Basic同様、開発ツールに位置するソフトであり、データベースをきちんと勉強していないと、ある程度以上は使えない、敷居の高いソフトでもあります。
ほとんどのデータベースソフトは、、縦(列)を項目、横(行)をレコードという形の表に見立てたファイルを扱うようになっています。アクセスでは、このファイルのことを、テーブルと呼んでいます。アクセスの便利なところは、条件を指定することで、条件にあったレコードだけを抽出するクエリーという機能や、テーブルの内容やクエリーの実行結果を照会しやすいよう、フォームというユーザー・インターフェイスが備わっているところです。
図2.クエリー

PC版アクセス97での、クエリー画面。複数のテーブルを結合したり、レコードを抽出する条件を指定しています。
クエリーは、データベースを詳しく知らない人でも、マウスでぴーっとドラッグしてテーブル同士の関連づけを指定できる、優れた機能であり、これがあるから素人でもアクセスが使えるのですが、残念ながら、PocketAccessには、この、クエリー機能がありません。
では、クエリーでやっているようなことをPocketAccessでしようと思えばどうしたらいいのでしょう?
実は、PocketAccessでは、レコードの結合や抽出などは、SQLを使って行います。
◆SQLプロシージャ
ここで、SQLプロシージャというビューを見てみましょう。
図3.SQLビュー
開くと、いくつかのアイコンがありますね。試しに、ひとつ、開いてみましょう。「飲料在庫」というアイコンをダブルクリックしてみると、次の図のような結果が得られます。
図4.SQLプロシージャの実行結果
このまま、ツールバーの「SQL」ボタンを押すと、抽出の条件を見ることができます。押してみましょう……。
図5.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プロシージャに貼り付けてしまいます。
これだと、SQLがわからなくても、アクセスのクエリーを知っていたら、なんとかなる。ちなみに、図5のややこしいSQL文も、図2のクエリーからSQL文を発行して作りました。
◆便利なフィルター機能
ある項目(列)を選択し、指定した条件のレコードのみ表示するフィルタ機能があります。エクセルのオートフィルタみたいなものです。ツールバーの「フィルタ」ボタンを押して、項目を選び、フィルタリングしたい値を入力します。
図7.フィルター画面
すると、レコードの内容が、フィルタリングしたものだけになります。
図8.フィルター結果
フィルタリングを解除するには、もう一度フィルタのウインドウを呼び出して、「すべてを表示」ボタンを押せば、元に戻ります。
ちなみにこのフィルタ、テーブルでも、SQLプロシージャでも使うことができます。
とりあえず、駆け足で追ってみましたが、一回ではすべてを網羅し切れません。次回は、SQL文の説明をくわえながら、レコードの追加や削除、PC上のアクセスmdbファイルとの同期のことなどに触れたいと思います。