Microsoft Access Club >初心者講座 >永年勤続管理ソフト >このページ >次頁 - 前項


永年勤続管理ソフト--13_対象勤続年数の設定



今まで、テーブル、クエリ、フォーム、レポートの作成を進めてきました。基本的なオブジェクトの説明も逐次行い、大体の概略が出揃ったわけです。では、残すところを挙げておきましょう。 今後、これらに基づいて進めていきますので…。ご参考まで。

  1. 当年度の表彰対象者の抽出(クエリの抽出条件の設定)
  2. メインフォームの作成
  3. ヘルプ的なもの

 当年度の対象者を設定する方法

一番大事なものは、当年度の対象者を設定する方法です。

下記のクエリフィールドをご覧下さい。これは、No5で作成した「勤続5年目の年月日」を返すものです。ただ、このままですと全ての社員の勤続5年目にあたる年月日が返されますから、"抽出条件"を設定する必要があります。

抽出条件を設定しない場合は、下記のように返す年月日がバラバラとなります。

社員ID 社員名 性別 入社日 勤続5年 勤続10年 勤続15年 勤続20年 勤続25年
1 Access Boy 1975/10/01 80/10/1 85/10/1 90/10/1 95/10/1 00/10/1
2 Hayama 1977/04/01 82/4/1 87/4/1 92/4/1 97/4/1 02/4/1
3 Sakura 1976/05/01 81/5/1 86/5/1 91/5/1 96/5/1 01/5/1
4 松本 武 1981/04/01 86/4/1 91/4/1 96/4/1 01/4/1 06/4/1

 抽出条件設定

例えば、貴方の会社が5月15日の創立記念日に「2000/05/16〜2001/05/15」の間で、勤続5年目を迎えた社員のみを今回表彰すると仮定しましょう。

すると、下記のように抽出条件を設定する必要がありますね。

※期間は、Between #****/**/**# And #****/**/**# で表します。

今回のソフトでは、勤続5年から5年刻みで最高は30年まで用意していますから、このような設定をそれぞれ行う必要がありますね。大変です…。しかし、"ソフト"と名をうっている以上、この作業を出来だけ自動化させる必要があります。

直接、抽出条件をクエリに記述させるのは、50点ですね。Accessプログラマーとしては失格です(笑い)。

 フォーム上で抽出条件設定

一般的に、クエリの抽出条件はフォームを介して行うと便利です。上記の例でいいますと、下記のようなフォームを用意します。

上図の左のテキストボックスを「日付1」、右のテキストボックスを「日付2」と命名します。

このテキストボックスには、必ず日付を入力させる必要がありますので、プロパティの「定型入力」に 9999\年99\月99\日;0;# と記述して下さい。これで****/**/**形式で入力しなければ、エラーが表示されます。#入力者が異なっても、同じ形式で入力させる必要があります。開発者は、この点を注意して下さい。

なお、定型入力は難しく見えますが、Accessの作成ウィザードを利用できますので簡単です。なお、このフォーム名は「frm_cmd」と命名して下さいね。

このようなフォームを用いた場合、上記のクエリフィールドに配置する抽出条件は、下記のような形態になりますね。

Between [Forms]![frm_cmd]![日付1] And [Forms]![frm_cmd]![日付2]形式

この条件式は、定番中の定番ですから必ず覚えて下さい。そして、この構文を5つの作成済みのクエリの抽出条件に設定します。これで、全て共通の構文となりま した。

 フォーム上からクエリの実行

クエリの実行は、フォーム上のコマンドボタンから行います。これは「クリック時イベント」に下記のようなマクロを配置すれば完了です。

 マクロで条件分岐

このマクロには「条件分岐」を用いています。

ある条件下では、Aの処理、他はBの処理といったものです。一般的には、VBAで行うものですが簡易なものはマクロで対応が可能です。

IsNull() は関数で、()内がNullである場合のみ真(True)を返します。このマクロではテキストボックス「日付1」と「日付2」が空白であれば、メッセージボックスを表示させて"マクロの中止"を行います。 なお、空白でなければクエリを実行します。

ここで注意する点は、「削除クエリ」の実行を一番最初に行うことです。

今まで幾度となくお話をしましたが、"クエリの実行"は、単に開くのではなく「テーブルにデータ追加」を行いますので(追加クエリ)、既に前回のテーブル データが存在しているとデータを上書きしていきます。よって、これを避けるために現存在しているテーブルデータを削除するのです。

 データ保存専用のテーブル作成

次に、ちょっとしたテクニックをご紹介しましょう。それはテーブルの使い方です。

例えば、上記のフォームは対象年月日を指定するものです。しかし、このフォームを一度閉じると入力した年月日は消えてなくなります。フォームに入力したデータは保存ができないので当然ですが、これを保存させる方法を簡単なテーブル 作成、操作で可能になります。

下記のようなテーブルを作成して下さい。テーブル名は「tbl_kankyo」です。

テーブルデータ
 
ID 開始 終了
1 00/5/16 01/5/15
  1. これをフォーム「frm_cmd」のレコードソースに指定して下さい。
  2. 「開始」を「日付1」に、「終了」を「日付2」のコントロールソースとします。
  3. フォーム「frm_cmd」のプロパティの「データ」にある「追加」に いいえ を入力して下さい。
  4. これでIDフィールドが 1 であるレコード が常にフォーム上に表示される仕組みになりました。
考え方
  • 要するに、レコードが追加されてはまずいんです。いつも同じレコードを表示させる必要があります。 でないと、以前の入力データをフォーム上に表示できなくなります。

 

ページの先頭へ 前ページへ戻る


永年勤続管理ソフト--13_対象勤続年数の設定


 

-Microsoft Access Club-