MS Access Tips/Sample and VBA and Blog customize etc...

複数の文字列置換をクエリで一気に実行する

ももクロばかりだと、Accessユーザーに見捨てられそうなので、たまには Access Tips も。

複数の置換対応データをテーブルに格納しておいて、それを元にテーブル内のデータを一気に置換したい、という要件です。

クエリで一気置換

VBAが必要に思われそうですが、簡単な更新クエリ一発で可能です。

えっ?ももクロ?いえ、Access Tips です。

難易度:

要件

例えば、、

TData
IDFData
1○○れに○○○
2□かなこ□□あかり□しおり□
3△△△あやか△△ももか
4△△△△△
TReplace
IDFld1Fld2
1かなこ茶畑
2あやか洋菓子
3しおり空腹
4ももか小巨人
5れに感電

上記の TReplace の置換データの対応をもとに、TDataを変換する。
変換後は、

TDate
IDFData
1○○感電○○○
2□茶畑□□あかり□空腹□
3△△△洋菓子△△小巨人
4△△△△△

更新クエリ

下記のような更新クエリを作成します。。

クエリのデザインビュー

SQLですと、

この更新クエリを実行すると、「○件のレコードが更新されます。」のメッセージが出て、「はい」をクリックすると更新されます。

この「○件」は、更新されるレコードの件数ではなく、更新される回数になります。1件のレコードで複数の更新があればそれもカウントされます。

動作原理

下記のSQLのように複数のテーブルを結合せずに含めると両者のテーブルの件数を掛けた件数のレコードが出力されます。これには、2つのテーブルのすべての組み合わせが含まれていることになります。このようなクエリを「直積」といいます。

更新する必要があるレコードのみに絞り込む抽出条件を追加すると、

出力結果

IDFDataFld1Fld2
1○○れに○○○れに感電
2□かなこ□□あかり□しおり□かなこ茶畑
2□かなこ□□あかり□しおり□しおり空腹
3△△△あやか△△ももかあやか洋菓子
3△△△あやか△△ももかももか小巨人

直積クエリは普通は更新できないので、更新クエリにしても更新できないと思われがちですが、更新クエリだと更新できるのです。

ということで、上記の出力結果を更新クエリにすると、れに→感電、かなこ→茶畑、しおり→空腹、あやか→洋菓子、ももか→小巨人 の更新ができることになります。

追記: 下記で改良版を紹介しています。
複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips

拍手する

3 Comments

MukkuMuku says...""

 みかん,りんご,ばなな,とまと
 Orange,Apple,Banana,Tomato
じゃなくて、
 れに,かなこ,ももか,しおり,あやか
 Reni,Kanako,Momoka,Shiori,Ayaka
にすればいいんじゃないかな。(*゚ρ゚)

2011.10.25 19:57 | URL | #- [edit]
hatena says..."アイデア、採用!!"

MukkuMukuさん、ひょっとして、ももクロにはまってます?

2011.10.26 01:24 | URL | #5uE6dEgY [edit]
MukkuMuku says..."( ・ω・)"

いいえw

2011.10.27 18:39 | URL | #- [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/331-848ffae3
該当の記事は見つかりませんでした。