アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessのデータの一部、()で表された文字を削除したいのですが、うまくいきません。同一フィールドに2箇所あり、これも削除されため、行の左端から始まる()の分のみを削除するには どのようにすると良いですか

A 回答 (2件)

VBAを使用する回答(ACCESS単独では、正規表現が利用できませんので、VBAからVBScriptなどを呼び出して正規表現を利用する必要があります)は、すでに出ているので、関数とクエリだけで行う方法をひとつ。



特定の文字列を削除するには、REPLACE関数を使用して、対象文字列を""に置換すればできますが、残念ながら、REPLACE関数は、ワイルドカードが使えません。
そのため、今回のような、(不定の文字列)を置換することは単純にはできませんが、RIGHT・MID・LEFT関数とINSTR関数をうまく組み合わせて、更新クエリを作成すればできます。

削除したい(文字列)が、間違いなくフィールドの左端(1文字目)から入っているのなら、以下のように更新クエリを作成して実行で完了です。

1.削除したい(文字列)を含むフィールド(仮に「F1」とします)だけを持つ選択クエリを作成する。
2.抽出条件:に、InStr([F1],"(")=1 と入力する。
3.選択クエリを、更新クエリに変更し、レコードの更新:に、
Right([F1],Len([F1])-InStr([F1],")")) と入力する。

そのまま更新クエリを実行するか、一旦保存してから、その更新クエリを開けば削除完了です。

削除したい(文字列)の位置が不定でも、関数を適切に組み合わせることで、いろいろな条件に対応できます。
    • good
    • 1
この回答へのお礼

回答ありがとうございました

お礼日時:2011/09/18 07:50

正規表現を活用します。

次のQ&AのGin_IIさんの回答が使えるでしょう。

http://www.accessclub.jp/bbs2/0077/beginter24382 …

パターン文字列の sPtn = "@.*?@" の行を
sPtn = "^\(.*?\)"
とすればヒットするでしょう。
^が先頭の印で、()は特別な記号なので、\( \) でこの記号そのものを示します。
    • good
    • 0
この回答へのお礼

回答ありがとうございました

お礼日時:2011/09/18 07:51

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A