プロが教える店舗&オフィスのセキュリティ対策術

あるフィールドの「東京に行った。しかし・・・」の「東京」のみ置換するにはどうしたらよいでしょうか。
抽出条件の書き方で、できるのでしょうか。

A 回答 (6件)

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



クエリは、

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のバージョンによっては、使えないかもしれません。その時は、言ってくだされば、代替案を出します。

この回答への補足

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

補足日時:2000/12/31 09:49
    • good
    • 0

こんなのはどうでしょう。


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))))
    • good
    • 0
この回答へのお礼

サンプルを無事置換できました。いろいろなサンプルを提供していただきありがとうございました。目的に合わせて、いろいろ勉強していきたいと思います。

お礼日時:2001/01/01 06:56

ごめんなさい・・・


arataさんが書かれているように Replace関数はクエリーで直接使えませんね。すみませんでした (^_^;)
    • good
    • 0

Accessのバージョンは何なんでしょうか?


Access2000には Replace関数が追加されているので、それをクエリーでしようすればいいと思います。

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

参考URL:http://www.zenko3.com/
    • good
    • 0

arataさんのやり方が綺麗だと思いますが・・・



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

でどうでしょう
(東京に行った。しかし東京は・・・はダメですよ)
    • good
    • 0

更新クエリではありませんが・・・



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

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

どうしても更新クエリということだと、文字列操作系の関数を使えばできそうですが・・・

この回答への補足

実は更新クエリで是非とも実行したいのです。というか、更新クエリでこのようなことができるのかを確認したいというほうが近いかもしれません。ご存じの方よろしくお願いします。

補足日時:2000/12/31 06:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!