ACCESSの質問です。


td{
background-color:#ffffff;
}

「item」テーブルのメモ型フィールド「説明文」に

HTMLの構文が上記のようにあって、これを消したいので
下記の更新クエリを使ったのですが、削除できません。どこが悪いでしょうか。
エラーは出ていないです。

UPDATE item SET item.説明文 = Replace(説明文,'td{
background-color:#ffffff;
}','');

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/02/22 13:40:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:AZUY No.1

回答回数343ベストアンサー獲得回数12

ポイント27pt

こんばんは。

改行コードが抜けてるのではないでしょうか?

例:

UPDATE item SET item.説明文 = Replace(説明文,'td{'+chr$(13)+chr$(10)+
'background-color:#ffffff;'+chr$(13)+chr$(10)
'}','');
id:rupopon

ありがとうございます。

上記クエリを試したところ「構文エラー 演算子がありません」と出ます。

2008/02/21 19:03:32
id:bmax No.2

回答回数67ベストアンサー獲得回数16

ポイント27pt

お使いのACCESSはひょっとして2000でしょうか?

以下のようにテキストモードでの比較を明示的に指定してみてください。


UPDATE item SET item.説明文 = Replace(説明文,"td{

background-color:#ffffff;

}","",,,vbTextCompare);


として実行してみてください。


ちなみにACCESS2003で質問文のクエリを実行してみたところ正常に動作したので

構文の問題は無いと思いますので、ACCESSの不具合の気もします。

id:rupopon

ありがとうございます。ACCESSは2003をしようしています。おかしいですね。

上記クエリをしましたら「構文エラー 演算子がありません」が出ました。

2008/02/21 20:08:33
id:akibare No.3

回答回数157ベストアンサー獲得回数5

ポイント60pt

回答者様1の回答がほぼ正解ですが最後にchr(10)の後に+が抜けていました。

UPDATE item SET item.説明文 = Replace(説明文,'td{' + chr(13) + chr(10) + 'background-color:#ffffff;' + chr(13) + chr(10) + '}','');


Access 2003で検証してみましたのでご確認ください。

id:rupopon

ありがとうございました。

2008/02/22 10:57:57
  • id:AZUY
    UPDATE item SET item.説明文 = Replace(説明文,'td{'+chr$(13)+chr$(10)+
    'background-color:#ffffff;'+chr$(13)+chr$(10)+
    '}','');

    すいません、2行目の「+」が抜けてました。
  • id:rupopon
    ありがとうございました。
    エラーは直りましたが、結果を見ると
    td{
    background-color:#ffffff;
    }
    が消えていません。。。なんででしょう。。
  • id:rupopon
    改行のない部分だと質問のクエリでも出来るので
    改行の問題だと思います。
  • id:bmax
    すみません。回答のクエリでは構文エラー出ました。
    (第6引数を指定した場合、第4、第5も入力しないといけないようでした・・・。)
    下記で再度試していただけますか?

    UPDATE item SET item.説明文 = Replace(説明文,"td{
    background-color:#ffffff;
    }","",1,-1,1);
  • id:rupopon
    ありがとうございます。
    試したところエラーは直りましたが、あいかわらず
    td{
    background-color:#ffffff;
    }
    は消えませんTT
    改行があるとダメみたいです。
  • id:akibare
    すみませんすみません、コメント欄を読んでいませんでした。+の件は解決済みだったのですね。。
    これでもだめだったということで。別案としてchr(13)+chr(10)ではなくてchr(10)だけでも試してみてください。

    PDATE item SET item.説明文 = Replace(説明文,'td{' + chr(10) + 'background-color:#ffffff;' + chr(13) + '}','');

    あと、改行の前にスペースが無いか確認してください

    td{<スペース>
    background-color:#ffffff;<スペース>
    }

    みたいな感じになっていたらうまくreplaceしてくれないでしょうから。
  • id:akibare
    度々すみません、上記でCR/LFではなくてLFで試す場合は

    UPDATE item SET item.説明文 = Replace(説明文,'td{' + chr(10) + 'background-color:#ffffff;' + chr(10) + '}','');

    でした。
  • id:bmax
    他の方が指摘されているのと同じことになりますが、
    http://www.vector.co.jp/soft/dl/win95/util/se184738.html
    にあるようなツールを使い、クエリ中の改行コードと、テーブルに格納されている改行コードや余計な空白文字が含まれていないかを比較してみてください。


    あと、クエリ中の
    td{
    background-color:#ffffff;
    }
    の部分は手入力されたのでしょうか?
    説明文フィールドの値の一つをコピーされたのでしょうか?
  • id:rupopon
    たびたびありがとうございます。クエリ中の部分はコピーしました。
    改行コードを調べてみます。
  • id:rupopon
    akibareさんのクエリで出来ました!

    UPDATE item SET item.説明文 = Replace(説明文,'td{' + chr(10) + 'background-color:#ffffff;' + chr(10) + '}','');

    たすかりました。大変ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません