|
前頁では「郵便番号辞書」の検索について述べました。ここではこれまで作成してきた「住所録」に郵便番号辞書から住所を取得する検索機能を追加し、これを最終版とします。
郵便番号辞書(テーブル「ZIPDIC」)は「d011」にて作成しておくという事が前提です。本プログラムで郵便番号辞書を作成する機能はありません。
★こういった辞書は、データベースの管理者が作成・管理を行い、通常の利用者は検索し利用するのみで作成・編集は出来ないようにするのが良いという場合が多いです。作成編集が出来るという事は、消す事も出来るし、古いものに差し替える事も出来るという事です。会社の社内データベースの場合は特に重要です。各クライアントPCでも自分で辞書を作りたい、というような場合は、管理者のみが作成編集管理が出来る「共通辞書」と、各クライアントでも作成編集管理が出来る「個人辞書」とを別々に用意し利用出来るようにするパターンを取ります。
「d011」で郵便番号辞書(テーブル「ZIPDIC」)を作成しました。そのフィールド構成は以下のようになっています。
0 | 郵便番号 | ZIP | 文字列(文字数7) |
1 | 住所1カナ | ADK1 | 文字列 都道府県名(半角カナ) |
2 | 住所2カナ | ADK2 | 文字列 市・区名(半角カナ) |
3 | 住所3カナ | ADK3 | 文字列 町村名等(半角カナ) |
4 | 住所1 | ADR1 | 文字列 都道府県名 |
5 | 住所2 | ADR2 | 文字列 市・区名 |
6 | 住所3 | ADR3 | 文字列 町村名等 |
住所録テーブルのフィールド構成は
名前 | 変数名 | 内容 |
登録番号 | N | 整数 1,2,3,… 他と重複しない |
名前 | PNAME | 文字(最大半角20文字) |
名前(かな) | PKANA | 文字(最大半角20文字) |
郵便番号 | ZIP1 | 文字(半角3文字)郵便番号前半部 |
郵便番号 | ZIP2 | 文字(半角4文字)郵便番号後半部 |
住所1 | ADR1 | 文字(半角80文字) |
住所2 | ADR2 | 文字(半角80文字)マンション名等 |
電話番号 | TEL | 文字(半角14文字) |
FAX番号 | FAX | 文字(半角14文字) |
携帯番号 | PHONE | 文字(半角14文字) |
備考 | BIKO | 文字(半角80文字) |
ですが、住所録テーブルの郵便番号は2つに分けている事と、取得した住所1・住所2・住所3は、全て連結して、住所録テーブルの住所1に入れるようにするという事に注意します。
プロジェクト「d013」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「d013」というフォルダを作成し、前回の「d010」からファイルを全部コピーしてきます。Delphi6を起動します。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
タイトル | d013−住所録4 |
[ディレクトリ/条件]頁
パス及びディレクトリ | C:\DelphiProgram\db\d013 |
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\db\d013」の中に「d013.dpr」として保存
メニュー「プロジェクト」→「d013を再構築」を実行し、エクスプローラ等で不要になった「C:\DelphiProgram\db\d013」内にある「d010.〜」のファイルを消しておきます。
◆
メニュー「表示」→「プロジェクトマネージャ」
を実行し、コード画面の左側にドッキングさせておきます。
Form3、Form4の画面レイアウトを下記のようにしました。
[〒検索]をクリックして、画面を表示し、郵便番号から住所を検索して住所1にそれを入力するようにします。
[〒検索]をクリックしたら表示させる画面を作ります。画面レイアウトは下記のようにしました。Form6 となります。
[〒検索]をクリックしたら、Form6 のクラス定義のPublic部に記述した変数 P_yubin に、現在入力している郵便番号を入れて、Form6を表示(ShowModal)します。郵便番号辞書検索画面で、検索を行って[OK]をクリックしたら、変数 OKflag、P_yubin、P_addr、に値を入れて画面を閉じ、Form3、4の側で、郵便番号欄と住所1欄を書き換えるようにします。
郵便番号辞書検索画面は、前頁の「d012」でのプログラムと基本的には変わっていません。
SELECT * FROM ZIPDIC
WHERE ZIP LIKE '〜%'; |
を
SELECT * FROM ZIPDIC
WHERE ZIP LIKE '〜%'
ORDER BY ZIP; |
として郵便番号順に並べるようにした事、Memo1 に表示させていたのを StringGrid1 に表示させるようにした事、表示を最大1000個までに制限した事、です。あまりに沢山表示されても目で選択するのが大変ですし、多くなり過ぎて遅くなるのも問題ですから表示制限しています。
表 StringGrid1 で、入力したい郵便番号と住所を選択し、[OK]をクリック、或いは、表をダブルクリックしたら OKflag をTrueにして閉じます。この画面を表示した際に OKflag を False にして、[キャンセル]をクリックした時には何もせず閉じて結果的に OKflag は False として返されますが、これは、右上の[×]で閉じた時には「キャンセル」と同じ意味になる、というような具合にしています。
本プログラムは、プログラム「d011」を実行し、既に郵便番号辞書を作成した、という事を前提としています。もしこれを行っていない場合には、検索は出来ませんので注意して下さい。
今回はソースプログラムと実行プログラムを一緒に圧縮しています。プログラムの内容についてはソースプログラムを参照して下さい。
今回で「住所録」の話はお終いです。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
A B C D
E F G H
I J K L
M N O P
Q R S T
U V W X
Y Z
|