| Access実践入門 TOPへ |
| ■ マイクロソフトアクセス、サンプルプログラムのダウンロード(住所一括自動置き換えプログラム) | |||||||||
| 解凍ツール ダウンロードした書庫ファイルを解凍するには、解凍ツールが必要です (LHA & Zip extractor Lhasa ver0.17 for Win32)著作権者は竹村嘉人氏です。 お持ちでない方は、こちら |
|||||||||
| サンプルプログラムのダウンロード ここでは、フォルダを作成して、その中にダウンロードした方が使いやすいでしょう 次の手順でダウンロードしてください。 @ Cドライブに acadd というフォルダを作っておきます A ダウンロードするときに フォルダ acadd の中にダウンロードする B マイコンピュータを開く C フォルダ acadd を開き、ディスクトップ上の Lhasa が見えるようにマイコンピュータのウインドを移動しておく D 書庫 jhenkan.lzh を Lhasa のアイコンの上にドラッグアンドドロップします E フォルダ acadd の中に、住所変換.mdb が解凍されます ●こちらから、ダウンロード
|
|||||||||
| このプログラムの目的 このプログラムは、市町村の合併等で住所が変わってしまい、1レコードづつデータ変更するのが面倒な場合に、一括して置き換えるものです。 |
|||||||||
| プログラムの使用方法 まず、テーブルを見てください。 ![]() 「作業変更」のテーブルの内容です。 ![]() 番号:無くてもいいのですが、順番をつけています。 変更前:住所中に含まれる変更前の文字列です。 変更後:上の文字列がどう変わるかを登録します。 自動といっても、これだけは登録しなければいけません。 市町村合併の場合、各自治体で、変更前後の比較表を公開しているので、手に入れて登録してください。 一度登録しておけば、便利に使えます。 「ta会員」は「会員処理プログラム」で使われている、会員の情報が登録されているテーブルです。 このように、変更したい住所が含まれている、テーブルを、このmdbファイルにインポートしてください。 Accessのメニューから、「ファイル」「外部データの取り込み」「インポート」で出来ます。 「ta会員」のデータは次のようになっています ![]() 変換後は、次のようになります。 ![]() マクロの「実行」を実行すれば、モジュール「Module1」の中のhenkan() が呼び出されて、変換をします。 henkan()の内容を見てみます。 --------------------------------------------------- Dim dbs As Database Dim rst_1 As Recordset Dim rst_2 As Recordset Set dbs = CurrentDb Set rst_1 = dbs.OpenRecordset("作業変更", dbOpenTable) Set rst_2 = dbs.OpenRecordset("ta会員", dbOpenDynaset) rst_1.Index = "PrimaryKey" rst_1.MoveFirst Do Until rst_1.EOF rst_2.MoveFirst Do Until rst_2.EOF If InStr(rst_2!住所1, rst_1!変更前) <> 0 Then a = InStr(rst_2!住所1, rst_1!変更前) b = Len(rst_2!住所1) c = Len(rst_1!変更前) ans = Left(rst_2!住所1, a - 1) & rst_1!変更後 & Right(rst_2!住所1, (b - c - (a - 1))) rst_2.Edit rst_2!住所1 = ans rst_2.Update End If rst_2.MoveNext Loop rst_1.MoveNext Loop rst_1.Close rst_2.Close --------------------------------------------------- ta会員、住所1、はインポートするテーブルによって変更して使ってください。 変更する文字列が、住所1のどこにあるか調べて、その部分だけを変更します。 InStr()は、文字の位置を調べる関数ですが、含まれない場合は0を返しますので、0出なければ、住所1に変更前の文字が存在するということになります。 a = InStr(rst_2!住所1, rst_1!変更前) b = Len(rst_2!住所1) c = Len(rst_1!変更前) ans = Left(rst_2!住所1, a - 1) & rst_1!変更後 & Right(rst_2!住所1, (b - c - (a - 1))) この部分は、パズルのようですが、じっくり考えてみてください。 (注意) インポートしてから、実行するので、元のデータは大丈夫だと思いますが、万一に備えて、データをコピーを取っておいてから使ってください。 また、実行後も正しく変換が出来ているかどうか確認してから、元のデータに住所を戻すようにしてください。 |
|||||||||