-PR-
解決済み

アクセス更新クエリでの文字列置換の方法

  • 困ってます
  • 質問No.23311
  • 閲覧数4247
  • ありがとう数2
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 47% (767/1609)

あるフィールドの「東京に行った。しかし・・・」の「東京」のみ置換するにはどうしたらよいでしょうか。
抽出条件の書き方で、できるのでしょうか。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル11

ベストアンサー率 49% (139/279)

モジュールで関数を作って、その関数をクエリで使えば、出来ると思います。

クエリは、

UPDATE TEST_TBL SET TEST_TBL.DATA = REPL([DATA],"東京","京都");

のようにします。TEST_TBLのDATAカラムの、"東京"を"京都"に変更します。REPLが自作の関数です。

モジュールで、下記のようにREPL関数を作成します。

'
' sFrom・・・更新対象の文字列
' sFind・・・置換対象文字列
' sRepl・・・置換文字列
'
Public Function Repl( _
sFrom As String, _
sFind As String, _
sRepl As String) As String
Repl = Replace(sFrom, sFind, sRepl)
End Function

(インデントが消えて、見にくいですね。ごめんなさい)
Replace関数が直接クエリから呼べるかと思ったのですが、直接は駄目でした。また、Replace関数は、Accessのバージョンによっては、使えないかもしれません。その時は、言ってくだされば、代替案を出します。
補足コメント
s-holmes

お礼率 47% (767/1609)

丁寧な回答ありがとうございます。
関数を使わずにIIFとかを使ってsqlのみでできないでしょうか。
参考サイトらしきサイトを見つけたのですが、素人なもので単純化できません。
http://www.akj.co.jp/aug/qa/ans0001-0050/0582.html
投稿日時 - 2000-12-31 09:49:23
関連するQ&A
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル7

ベストアンサー率 52% (10/19)

更新クエリではありませんが・・・ 目的のことをしたいだけなら、 1.直接テーブルを開いた状態で「東京に行った・・・」のフィールドが選択された状態にします。 2.編集->置換 で  検索する文字列:東京   置換後の文字列:京都(とかね)  探す場所:(1.の作業で正しいフィールド名になってると思います)  検索の条件:フィールドの一部分 これで「東京」でも、「しかし」でも置換するこ ...続きを読む
更新クエリではありませんが・・・

目的のことをしたいだけなら、
1.直接テーブルを開いた状態で「東京に行った・・・」のフィールドが選択された状態にします。
2.編集->置換 で
 検索する文字列:東京 
 置換後の文字列:京都(とかね)
 探す場所:(1.の作業で正しいフィールド名になってると思います)
 検索の条件:フィールドの一部分

これで「東京」でも、「しかし」でも置換することができます。

どうしても更新クエリということだと、文字列操作系の関数を使えばできそうですが・・・
補足コメント
s-holmes

お礼率 47% (767/1609)

実は更新クエリで是非とも実行したいのです。というか、更新クエリでこのようなことができるのかを確認したいというほうが近いかもしれません。ご存じの方よろしくお願いします。
投稿日時 - 2000-12-31 06:02:32
  • 回答No.3
レベル7

ベストアンサー率 52% (10/19)

arataさんのやり方が綺麗だと思いますが・・・ レコードの更新: Left([DATA],InStr([DATA],"東京")-1) & "京都" & Right([DATA],Len([DATA])-(InStr([DATA],"東京")+2)) 抽出条件:like "*東京*" でどうでし ...続きを読む
arataさんのやり方が綺麗だと思いますが・・・

レコードの更新:
Left([DATA],InStr([DATA],"東京")-1) & "京都" & Right([DATA],Len([DATA])-(InStr([DATA],"東京")+2))
抽出条件:like "*東京*"

でどうでしょう
(東京に行った。しかし東京は・・・はダメですよ)
  • 回答No.4
レベル5

ベストアンサー率 40% (2/5)

Accessのバージョンは何なんでしょうか? Access2000には Replace関数が追加されているので、それをクエリーでしようすればいいと思います。 Access97以前では既に回答されていますが、VBAでモジュールを作成したほうがいいと思います。私のホームページのほうにも Replace関数と同等の機能のモジュールを公開しています。 ...続きを読む
Accessのバージョンは何なんでしょうか?
Access2000には Replace関数が追加されているので、それをクエリーでしようすればいいと思います。

Access97以前では既に回答されていますが、VBAでモジュールを作成したほうがいいと思います。私のホームページのほうにも Replace関数と同等の機能のモジュールを公開しています。
  • 回答No.5
レベル5

ベストアンサー率 40% (2/5)

ごめんなさい・・・ arataさんが書かれているように Replace関数はクエリーで直接使えませんね。すみませんでした (^_^;)
ごめんなさい・・・
arataさんが書かれているように Replace関数はクエリーで直接使えませんね。すみませんでした (^_^;)
  • 回答No.6

こんなのはどうでしょう。 IIf(InStr(1,[DATA],"東京")=0,[DATA],IIf(InStr(1,[DATA],"東京")=1,"京都" & Mid([DATA],3),IIf(InStr(1,[DATA],"東京")>1,Left([DATA],InStr(1,[DATA],"東 ...続きを読む
こんなのはどうでしょう。
IIf(InStr(1,[DATA],"東京")=0,[DATA],IIf(InStr(1,[DATA],"東京")=1,"京都" & Mid([DATA],3),IIf(InStr(1,[DATA],"東京")>1,Left([DATA],InStr(1,[DATA],"東京")-1) & "京都" & Mid([DATA],InStr(1,[DATA],"東京")+2))))
お礼コメント
s-holmes

お礼率 47% (767/1609)

サンプルを無事置換できました。いろいろなサンプルを提供していただきありがとうございました。目的に合わせて、いろいろ勉強していきたいと思います。
投稿日時 - 2001-01-01 06:56:29
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ