• ベストアンサー
  • すぐに回答を!

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

  • 質問No.6011241
  • 閲覧数823
  • ありがとう数25
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 50% (21/42)

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

クエリを使って置換をしようと思うのですが、
うまく出来ません。

変更したい文字はHTMLなんですが

</tbody></table><br><br>

という文字を

<br><br><table>

に置換したいです。


■まずは、アクセス初心者なので、
ちゃんと抽出できるか確かめるために、

選択クエリで抽出条件に
In (</tbody></table><br><br>)
といれましたが、エラーが出てしまいます。


どなたか、わかるかたいたら教えてください。

よろしくお願いします。

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

  • 回答No.6
  • ベストアンサー

ベストアンサー率 75% (685/907)

スラッシュを取り除くのは提示した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件)

  • 回答No.7

ベストアンサー率 23% (292/1222)

例えば、
</tbody>
</table>
<br><br>
と3行記載(アクセスのテーブルのレコードは3件)に
なっている箇所も変える必要があれば、検討事項となります。
最初から対策見直しになります。

クエリでやらなければならない必要性が不明ですが、
VBAで前後のレコードも比較しながら更新するような
ことになっても回答例を元に対処できますか。
  • 回答No.5

ベストアンサー率 23% (292/1222)

http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html#replace

こういう説明サイトを探して学習してみてください。
「replace関数」で検索
  • 回答No.4

ベストアンサー率 23% (292/1222)

>クエリを使って置換をしようと思うのですが、

htmlのファイルならテキストエディタでもできるかと
思いますが、クエリでないとダメでしたら、
「選択クエリ」「更新クエリ」の違いを確認してください。
「選択クエリ」は実行した結果でデータの更新はされてません、
「更新クエリ」は実行した結果でデータの更新はされてます。

>テーブル名は:item1
>置換したいフィールド名は:商品説明文
>置換したい文字は(置換前):</tbody></table><br><br>
>置換後の文字は(置換後):<table><tr><td>

置き換えた後、構造が崩れてしまうと大変で戻せる保障がないので
バックアップを取得してからやってください。

>In (</tbody></table><br><br>)
In (”</tbody></table><br><br>”)でどうなるか確認してください。
  • 回答No.3

ベストアンサー率 75% (685/907)

選択クエリで確認するなら、

SELECT item1.商品説明文, Replace([item1]![商品説明文], "/", "", 1, -1, 2) AS 変換文字列
FROM item1;
補足コメント
infumi1126

お礼率 50% (21/42)

【補足】

"<>"は置換できないのですか??
投稿日時:2010/07/03 09:12
お礼コメント
infumi1126

お礼率 50% (21/42)

ありがとうございます。

教えて頂いたSQL文で
選択クエリで"/"をなくすことはできました。

しかし、
置換前:</tbody></table><br><br>

を指定して置換しようとしても置換されません。

なぜでしょうか??
教えていただけますか?

ちょっとずづ、近づいている気がするので、
もう少しお付き合いお願いします!!
投稿日時:2010/07/03 09:10
  • 回答No.2

ベストアンサー率 75% (685/907)

以下の子更新クエリでどうですか。

UPDATE item1 SET item1.商品説明文 = Replace([item1]![商品説明文], "/", "", 1, -1, 2);
  • 回答No.1

ベストアンサー率 75% (685/907)

>選択クエリで抽出条件に
>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

お礼率 50% (21/42)

ありがとうございます。
説明不足でした。
かつ勉強不足ですみません。

今、私が使っているのはaccess2003です。

テーブル名は:item1
置換したいフィールド名は:商品説明文
置換したい文字は(置換前):</tbody></table><br><br>
置換後の文字は(置換後):<table><tr><td>

です。

レコードの件数が1300件ほどあります。

なにかいい方法があれば教えてください。
よろしくお願いします。
投稿日時:2010/07/03 01:59
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

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

ピックアップ

ページ先頭へ