• ベストアンサー

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

アクセスでの置換について(クエリ) クエリを使って置換をしようと思うのですが、 うまく出来ません。 変更したい文字は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

  • Accessのクエリで。

    Accessのクエリで。 お世話になります。 Accessのクエリにて、デザインビューで色々抽出 条件を入力していて、#から始まる物を抽出しようとした所 (LIKE "#*")、数字の行のみしか抽出できない状態です。 どの様にしたら、#から始まる文字の行を抽出出来ますでしょうか。 ご教授下さいます様、宜しくお願い致します。

  • Accessである語句を除外したクエリーを作りたい

    Accessで選択クエリを作るときに 指定した条件以外のレコードを抽出するようにしたいのです。 たとえば、ある項目に「あいう」という文字が入っていないレコードを抽出したいのですが、抽出条件にNot"あいう"と入れると未記入のものまで排除されてしまいます。 未記入のものはそのまま残して、「あいう」のあるレコードを除外するクエリーを作るためにはどうすればいいのですか?

  • Access 置換を更新クエリで組めませんか?

    フィールドに「123万円」とあるのを、万円を除いた数字だけ(123)にしたいです。 置換しようとしたところ、1件ずつだとうまくいきますが、『すべて置換』を選択すると エラーがでます。件数が多いため、1件ずつ置換なんてしていられません。 更新クエリで置換することはできないのでしょうか?

  • アクセス クエリ

    アクセス クエリの抽出について教えて下さい。例えば、1つのクエリの中に数値のフィールドが5つ作成してあり、それぞれ違うフィールドの抽出条件をしています。それぞれの条件を入れてしまうと5つのフィールド条件全てに合ったものしか抽出できません。 5つのフィールドのうち、どれでも1つ一致したら抽出できるようにしたいのですが良い方法を教えて下さい。宜しくお願いします。

  • Accessのパラメータクエリについて

    Accessのパラメータクエリがうまく動かなくて困ってます。 実はODBC経由でリンクテーブルを作っておりまして、そこからパラメータクエリで抽出を試みたのですが、パラメータは聞いてきますが抽出できません。 選択クエリ状態で直接抽出条件を入れてやれば何の問題もなく通常のテーブルと同様に抽出できるのですが、パラメータクエリにする、または同じ事ですが他のフォームのコントロールを参照させる状態ですと、エラーも出ずにノンデータとなります。 これって何故なんでしょうか?対処方法はありますか? ちなみにリンク元のテーブルはオラクルですがデータ型とかが関係あるのでしょうか?

  • Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか?

    Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか? 工程管理のAccessDBがあり、毎日更新される工程を管理するため、数種類の選択クエリを作成しています。 そのクエリからExcelのデータベースクエリを使ってExcelシートにクエリ毎に各シートに取り込んでいます。 Accessクエリは不定期で抽出条件を変更しています。 抽出条件はどのクエリでも同時に同じものを使うところが多いため、任意に入力した値を抽出条件に指定できれば、一度で全クエリの抽出条件を変更できるのではないかと考えています。 色々調べてもフォームを使った方法は紹介されていますが、上記の条件下でいい方法はないでしょうか? 抽出条件は『Is Null Or >#2008/06/30#』のような感じです。

  • テーブルを使った置換

    Access2002 Accessでクエリ実行時に特定の文字列を置換したいと思っています。 今までは置換する文字列が1つだけだったので、replace関数を使って直接置換する文字列を書いていたのですが、置換する文字列が今後増えてきそうなのでテーブルで管理したいと思っています。 置換用テーブル 元 ,置換後 000022,002078 000218,002403 000447,002703 クエリは単純な選択クエリなのですが、上記のようなテーブルを使ってクエリ実行時に文字を置換する方法がわかりません。 よろしくお願いします。

  • ACCESS クエリで”1”でないものを選択するには?

    ACCESS2003で排他選択("1"でないものを選択) をしたいのですが あるフィールドに”1”かブランクが入っていて ”1”以外のものを選択したいのですが クエリのデザイン画面で ------------------------- フィールド テーブル 並べ替え 表示 抽出条件  <> "1" ------------------------- 抽出条件に = "1" を入れると、"1"のレコードのみ 選択できます やりたいのは "1"以外のものを選択したいのです そこで 抽出条件に<> "1"といれると レコードがゼロ件になります また、Not "1"とか <> "1"、とか、Not = "1" と入れてみても、抽出結果はゼロ件になります 原因を教えてください

  • 選択クエリーの一括編集

    マイクロソフトのアクセスにて選択クエリーをたくさん作成しています。それらの選択クエリーの編集を行いたいのですが、一括して選択クエリーの内容を編集する方法はございますでしょうか。 具体的には選択クエリーの抽出条件で日付を設定していますが、その日付を一括で置換したいと考えております。

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

専門家に質問してみよう