<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--自動採番の巻
   1 2 3 4 5



では、応用ヘン、ということで・・・。
今までの内容をフル回転させて、下のような番号つけができるようにしてみましょうか。
頭のアルファベットを、数パターン用意してみようかと思います。

これもですねぇ。実際に「どういうルール付けで、AAAとBBBとCCCとDDDとEEEを分けるのか」を、じっくり考えないことには作りようがないのですよ。
なので、具体的な例をひとつやってみます。あとは、皆さんの業務にあわせて考えていってください。
とにかく、フォーム上でどういう動作をしたら、どういう採番が可能なのか、その辺を見極められるよう、基本を押さえちゃってくださいね。

とりあえず、上のようなテーブルをひとつこしらえてください。
わたしは改めて、テーブルBという名前で作りました。




今回は、フォーム上にリストボックスを作り、そのリストボックスで選んだアルファベットを先頭に持ってこようと思います。
フォームウィザードかオートフォーム単票形式で、上のテーブルを元にひとつフォームを作成してください。
わたしは、フォームBという名前をつけてみました。

で、その中に、リストボックスを作ります。
リストボックスは適当で結構です。5種類くらい、何かしら文字列が並ぶよう作ってください。テーブル作ってもいいし、値のリストに直接指定しても結構ですよ。
リストボックスの名前は、そのままでもけっこうですし、あえて変更してもよいです。
わたしは「分類」っていう名前に変更してみました。もうこういう「名前付け」に関しては、みなさんオッケーだと思いますけど、まだなれてなくて・・・という方は、ちょっとこの辺注意してくださいね。

わたしのフォームはこんな↓感じになりました。
「分類」のリストボックスは、テーブルの中のフィールドとは連動してはいません。



で、どういうふうに作ろうかな・・・。
わかりやすいところで、クエリを活用してみますね。

まず、こんな感じのクエリを作ってみます。Left関数というのを使って、左から3桁分、つまり「アルファベット」の部分だけ取り出します。

このクエリ開くと、↓こんな感じの結果になります。

で、このクエリの抽出条件に、さっき作ったリストボックスを参照するよう、条件を書きます。

で、そっとそっとさっきのフォームBを開いて・・・リストボックスからどれかひとつ、選んでください。クリックして黒く反転させるってことです。

でもって、そっとそっと、クエリをデータシートビューに切り替えると・・・

BBBのものだけに絞り込まれて表示されてます?
ちょっとテストしにくいですけど、そっとそっと、慎重にテストしてくださいね。

うまく絞り込まれるようでしたら、このクエリに何か適当な名前を付けて保存します。



で、上で作ったクエリを、テーブルの変わりに使えばいいわけです。

で、どうかな・・・フォームビューに切り替えて・・・。

どれか分類を選んで、名前を入力すると・・・。

番号、つきます???


でも・・・もし、分類を何も選ばずにいきなり「名前」の入力をしちゃったら・・・。
アルファベットなしの、数字とハイフンだけになっちゃいますよね。

どうしよう。
じゃ、「分類」をクリックしたら、名前の入力ができるように、最初は使用不能の状態にしておきましょうか。テキストボックスの「使用可能」「編集ロック」のプロパティの使い方、皆さんオッケーですよね。
でもって、「分類」のリストボックスをクリックしたら、名前の入力が可能になるよう、ひと手間加えましょう。

こうしておくと・・・。

最初は、「名前」のテキストボックスにはカーソルが入らないはずです。

どれか、分類を選ぶことによって、初めて入力可能になりますよね。

ややっこしいですが、こうした気遣いをいくつか盛り込んでやることで、正しくスムーズに番号を付けていくことができるはずです。

複雑な処理も、こうした基本的な動作を理解してこそ、だと思います。
さあ、次はいよいよ皆さんのデータベースの中での自動採番。がんばってよい仕組みを作っていってくださいね。