Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1256 / 2272 ツリー ←次へ | 前へ→

【7992】住所の変換について 秋山 06/6/15(木) 20:11 質問[未読]
【7994】Re:住所の変換について 小僧 06/6/16(金) 10:13 回答[未読]

【7992】住所の変換について
質問  秋山  - 06/6/15(木) 20:11 -

引用なし
パスワード
   住所の変換の仕方についてお聞きします。
最近、市町村合併が行われているため、住所が以前と変わってきているため、過去の住所データを一括して変換したいのです。

テーブルA
 住所
---------------------------
A市B町C 123-45
D市E町F 789-123
A市B町G 777-44
 ・・・・


テーブルB
 旧住所   新住所
--------------------------
A市B町  H市B町
D市E町  D市J町
 ・・・・

上記の例でいいますと、たとえばテーブルAという過去に作成した住所データがあったとします。
今度、テーブルBにあるように市町村名などが変わった場合、一括してテーブルAを下記のように変換したいのです。

テーブルA
 住所
---------------------------
H市B町C 123-45
D市J町F 789-123
H市B町G 777-44
 ・・・・

どうか教えてください。

【7994】Re:住所の変換について
回答  小僧  - 06/6/16(金) 10:13 -

引用なし
パスワード
   ▼秋山 さん:
おはようございます。

>過去の住所データを一括して変換したいのです。
>
>テーブルA
> 住所
>---------------------------
> A市B町C 123-45
> D市E町F 789-123
> A市B町G 777-44
> ・・・・

OS や Access のバージョンによって使える命令などに差がでてきますので、
質問をされる際には必ず明記して下さいね^^
下記コードはAccess2000以降が対象です。
標準モジュールに記述し、実行されてみて下さい。

Sub 住所変換()
'要参照 Microsoft DAO x.x Object Library
Dim RS1 As DAO.Recordset
Dim RS2 As DAO.Recordset
Dim strSQL As String

  Set RS1 = CurrentDb.OpenRecordset("テーブルB", dbOpenSnapshot)
  Do Until RS1.EOF
    strSQL = "SELECT * FROM テーブルA WHERE 住所 LIKE '" & RS1![旧住所] & "*'"
    Set RS2 = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
      Do Until RS2.EOF
        RS2.Edit
        RS2![住所] = Replace(RS2![住所], RS1![旧住所], RS1![新住所])
        RS2.Update
        RS2.MoveNext
      Loop
    RS1.MoveNext
  Loop
  RS2.Close: Set RS2 = Nothing
  RS1.Close: Set RS1 = Nothing
  
  MsgBox "置換終了"
End Sub

※ レコード数によっては結構時間が掛かってしまうかもしれません…

1256 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078226
(SS)C-BOARD v3.8 is Free