• ベストアンサー

アクセスでの置換について(クエリ)

アクセスでの置換について(クエリ) クエリを使って置換をしようと思うのですが、 うまく出来ません。 変更したい文字はHTMLなんですが </tbody></table><br><br> という文字を <br><br><table> に置換したいです。 ■まずは、アクセス初心者なので、 ちゃんと抽出できるか確かめるために、 選択クエリで抽出条件に In (</tbody></table><br><br>) といれましたが、エラーが出てしまいます。 どなたか、わかるかたいたら教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

スラッシュを取り除くのは提示したSQLで お判りと思いますが、 変換するHTMLのパターンが </tbody></table><br><br> これだけではどのような手段をとればいいのか わかりにくいのです </tbody></table><br><br> を、 <br><br><table> に変換するのはどういう規則性にあてはまると このように変換するのかがわからないのです。 たとえば、<>の中にスラッシュのついた文字列 があった後、スラッシュのない文字列を含む <>が存在したり、連続したりした場合には その前の</文字列>のスラッシュを取り除いて <文字列>をスラッシュを含まない<文字列>の 一番後ろにくっつけるのか、あるいは何番目に 挿入するのか、などが明確でないとどのような 手段がいいのかわかりません。 いくつかのパターンが存在するならば、それが 一つの関数ですむのか、あるいはパターンに 合わせて関数を複数作成するのかは規則性 しだいです。 それに、質問では、 </tbody></table><br><br> を <br><br><table> に変換になっていますが、 補足では、 </tbody></table><br><br> を <table><tr><td> に変換する、となっていて規則性が違うのです。 変換後の文字列も明らかに違います。 この違いはどのような規則性に基づくのかが 明確でないと何もできません。あるいは 単に書き間違いなのか。 いい回答をもらうためにはこのあたりが肝要です。

その他の回答 (6)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

例えば、 </tbody> </table> <br><br> と3行記載(アクセスのテーブルのレコードは3件)に なっている箇所も変える必要があれば、検討事項となります。 最初から対策見直しになります。 クエリでやらなければならない必要性が不明ですが、 VBAで前後のレコードも比較しながら更新するような ことになっても回答例を元に対処できますか。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html#replace こういう説明サイトを探して学習してみてください。 「replace関数」で検索

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

>クエリを使って置換をしようと思うのですが、 htmlのファイルならテキストエディタでもできるかと 思いますが、クエリでないとダメでしたら、 「選択クエリ」「更新クエリ」の違いを確認してください。 「選択クエリ」は実行した結果でデータの更新はされてません、 「更新クエリ」は実行した結果でデータの更新はされてます。 >テーブル名は:item1 >置換したいフィールド名は:商品説明文 >置換したい文字は(置換前):</tbody></table><br><br> >置換後の文字は(置換後):<table><tr><td> 置き換えた後、構造が崩れてしまうと大変で戻せる保障がないので バックアップを取得してからやってください。 >In (</tbody></table><br><br>) In (”</tbody></table><br><br>”)でどうなるか確認してください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

選択クエリで確認するなら、 SELECT item1.商品説明文, Replace([item1]![商品説明文], "/", "", 1, -1, 2) AS 変換文字列 FROM item1;

infumi1126
質問者

お礼

ありがとうございます。 教えて頂いたSQL文で 選択クエリで"/"をなくすことはできました。 しかし、 置換前:</tbody></table><br><br> を指定して置換しようとしても置換されません。 なぜでしょうか?? 教えていただけますか? ちょっとずづ、近づいている気がするので、 もう少しお付き合いお願いします!!

infumi1126
質問者

補足

【補足】 "<>"は置換できないのですか??

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

以下の子更新クエリでどうですか。 UPDATE item1 SET item1.商品説明文 = Replace([item1]![商品説明文], "/", "", 1, -1, 2);

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>選択クエリで抽出条件に >In (</tbody></table><br><br>) クエリのSQL文が表示されていないので このInが何を示しているのかよくわかりませんが。 (1) Accessのバージョンが2002以上の場合 テーブル1のフィールドを文字列とし、ここにHTMLをいれます。 SELECT テーブル1.文字列, Replace([テーブル1]![文字列], "/", "", 1, -1, 2) AS 変換文字列 FROM テーブル1; で、置換されます。 (2) Accessのバージョンが2000の場合 関数は以下に表示されているReplaceStringというユーザー定義関数です。 http://www.ruriplus.com/msaccess/faq/faq_038.html この関数のコードを標準モジュールに貼り付け、保存します。 以上はできますか。 次に、テーブル1のフィールドを文字列とし、ここに HTMLをいれます。 クエリのSQL文は以下です。 SELECT テーブル1.文字列, ReplaceString([テーブル1]![文字列],"/","") AS 変換文字列 FROM テーブル1; これで置換表示されます。

infumi1126
質問者

お礼

ありがとうございます。 説明不足でした。 かつ勉強不足ですみません。 今、私が使っているのはaccess2003です。 テーブル名は:item1 置換したいフィールド名は:商品説明文 置換したい文字は(置換前):</tbody></table><br><br> 置換後の文字は(置換後):<table><tr><td> です。 レコードの件数が1300件ほどあります。 なにかいい方法があれば教えてください。 よろしくお願いします。

関連するQ&A