- ベストアンサー
Accessのデータの一部を削除する方法
Accessのデータの一部、()で表された文字を削除したいのですが、うまくいきません。同一フィールドに2箇所あり、これも削除されため、行の左端から始まる()の分のみを削除するには どのようにすると良いですか
- みんなの回答 (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],")")) と入力する。 そのまま更新クエリを実行するか、一旦保存してから、その更新クエリを開けば削除完了です。 削除したい(文字列)の位置が不定でも、関数を適切に組み合わせることで、いろいろな条件に対応できます。
その他の回答 (1)
- seastar3
- ベストアンサー率69% (99/142)
正規表現を活用します。次のQ&AのGin_IIさんの回答が使えるでしょう。 http://www.accessclub.jp/bbs2/0077/beginter24382.html パターン文字列の sPtn = "@.*?@" の行を sPtn = "^\(.*?\)" とすればヒットするでしょう。 ^が先頭の印で、()は特別な記号なので、\( \) でこの記号そのものを示します。
お礼
回答ありがとうございました
お礼
回答ありがとうございました