Chapter 2 | MDBとして作ってみよう!(1) | ||
2-1.サンプルアドインについて 2-2.テーブルを作る 2-3.クエリーを作る 2-1.サンプルアドインについて それでは、"ポイントだけ押さえれば簡単にオリジナルアドインを作成できる"というテーマにしたがって、さっそくアドイン作りに入っていきましょう。具体的な作成手順に入る前に、今回サンプルとして作成するアドインの完成予想図を説明しましょう。 このサンプルアドイン(SampleAd.MDA)は、[ツール]-[アドイン]メニューから起動するメニューアドインで、次のような機能を持っています。
今回のもう一つのテーマのポイントは、「アドインといっても、基本は普通のデータベース .MDB と同じ」ということです。それを知っていただくためにもあえて最初はMDBとしてアドインを作り始めることにしました。これを今読んでいる方のほとんどは、しばらくはこれが「アドイン入門」であることを忘れるぐらい、いつも作っているデータベースと同じ手順で作っていくことが分かると思います。 2-2.テーブルを作る まず、Accessを起動して、データベースを新規作成します。今回は普通のデータベース .MDB として作成します。データベースの名前は SampleAd.MDB です。 データベースができたら、最初にテーブルを作成します。もちろん実際には、フォームを先に作っても、部品としてプロシージャを先に作ってもかまいません。 今回作成するテーブルは、カレントデータベースのフォーム一覧データを格納するテーブル(smp_tblObjList)、指定フォームのプロパティ一覧データを格納するテーブル(smp_tblObjPropList)の2つです。それぞれのテーブルのフィールドデザインは下図のとおりです。
smp_tblObjListテーブルは、データベース上にあるフォームの名称を格納するだけですので、「ObjectName」というテキスト型フィールドだけを定義します。もし、フォーム名一覧のリストボックスに、フォーム名だけでなくフォームの「説明」や「更新日時」も表示したければ、それに合わせてフィールドを作っておいてもよいでしょう。また、ここではIDフィールドは特に意味を持ちませんが、テーブルの最初の保存時に勝手に追加されるままにしておきました。 smp_tblObjPropListテーブルは、指定フォームのプロパティ名とプロパティ値を格納します。プロパティ名はこのテーブルの「PropertyName」フィールドに格納します。また、各プロパティ値は「PropertyValue」フィールドに格納します。プロパティ値には文字列や数値のものもありますが、特に注意しなければならないのは、中には非常に長い文字列、つまりテキスト型フィールドとして格納可能な255バイトを超えるプロパティ値を持つ可能性もあるということです。例えば[RecordSource]プロパティにSQLステートメントを格納している場合などがそれに相当します。そのため「PropertyValue」フィールドはメモ型フィールドとしておかなければなりません。 今回はたった2つのテーブルだけ、しかも非常にシンプルなフィールド構成のものです。確かに、格納されるデータの内容は「氏名」や「金額」といったデータベースアプリケーションでよく使われるものとは違いますが、テーブルの作り方自体には特に違いはない、ということはお分かりになったと思います。 2-3.クエリーを作る 続いての作業として、クエリーを作成します。クエリーについても、とりたてて注意は要りません。必要に応じて選択クエリーやアクションクエリーなどを作成するだけです。しかし、今回のサンプルアドインではそれらのクエリーは1つも使っていません。smp_qdefObjList および smp_qdefObjPropList という2つのデータ定義クエリーがあるだけです。 この2つのクエリーはちょっと変わった用途に使っています。先ほど作成した2つのテーブルですが、まずsmp_tblObjListテーブルの場合には、異なるデータベースを対象にフォーム一覧を調べる際、それまであったフォーム一覧データをクリアして、テーブルをいったん空にしなければなりません。またsmp_tblObjPropListの場合には、異なるフォームのプロパティを調べる際にそれまであった他のフォームのプロパティ一覧データをクリアしなければなりません。そのような場合、削除クエリーを実行しても、またVBAを使って削除してもまったく差し支えないのですが、今回はその1つの方法として、データ定義クエリーを使ってテーブルそのものを作り直してしまう、という方法を使っています。後で図示するクエリーのSQLビューの内容を見れば分かると思いますが、"CREATE TABLE"というSQLステートメントを実行することによってテーブルを新規作成するのです。実際にはこのクエリーを実行する前に、それまであったデータの格納されているテーブルのオブジェクトをデータベースから削除しなければなりませんが、これについてはモジュール作成のところで説明したいと思います。 ここで作成するデータ定義クエリーは、
|
|||
|
Copyright © T'sWare All rights reserved |