• ベストアンサー

アクセスでの文字の抽出について

アクセス2000を使っております。 文字の抽出方法を教えてください。 企業名というデータがあり、 ○○会社 御中 と、御中がついてるものと、 XX会社    と、御中がついてないものとがあります。 これを、クエリーで「御中」を全てつけるか、 「御中」を全てとるか、どちらかにしたいのです。 やればやるほど混乱・・・・。 教えてください。

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

  • ベストアンサー
  • omusupa
  • ベストアンサー率61% (115/186)
回答No.3

やはり、データとしては皆さんがおっしゃているとおり、”御中”をとったほうがいいでしょう。そして方法なのですが・・・ >これを、クエリーで「御中」を全てつけるか、・・・ 「クエリ」でと書かれているので、演算フィールドを作る方法でいいのでしょうか?それであれば・・ 「デザインビューでクエリを作成する」→「企業名」の入っているテーブルを追加します。そして下のフィールドのところに以下の式を入れてみてください。 式1: IIf(Right([企業名],2)="御中",Left([企業名],Len([企業名])-2),[企業名]) そうすると、御中の無い企業名ができると思います。 直接テーブルのデータを御中の無い状態に変えてしまいたいのであれば、「更新クエリ」を使います。 「デザインビューでクエリを作成する」→「企業名」の入っているテーブルを追加します。そしてメニューバーの「クエリ」「更新」を選びます。 フィールドは下向き三角から「企業名」を選択します(そうすると自動的にテーブルも選択されると思います)そしてレコードの更新のところに IIf(Right([企業名],2)="御中",Left([企業名],Len([企業名])-2),[企業名]) を入れてください。そして更新クエリを実行すると、テーブルの企業名から御中がなくなると思います。この更新クエリはもし失敗してしまっても元に戻すことができませんから、あらかじめコピーを取ってから実行するといいと思います。

333and333
質問者

お礼

ありがとうございます。 !!!!!そうです。これがやりたかったのです。 (最初の) Len関数をすっかり忘れており、ビルダで必死になにを使っていいのか探してさまよっておりました。 大変勉強になりました。 ”御中”を取るのは、今後の課題とします。 ありがとうございました。

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

なんか難しく考えているようですが・・・ テーブルを開いて、メニューから[編集]-->[置換]で 御中 を 空白に 入れ「すべて置換」すれば、いいだけと思います。 御中の前に必ずスペースが入っているのでしたら、その通り指定すると まず、間違いないでしょう。

333and333
質問者

補足

ありがとうございます。 データの変更は、1に書かせていただいと通りできないのです。 置換は、今後のシステム変更時に使用させていただきます。 ありがとうございました。

回答No.2

どちらにしたいのかが質問を読んだだけではわからないのですが… まず最初に、御中をつけないほうがいいと思います。 ラベル印刷をすることになった際に、会社や部署名で出すだけなら レポートに「御中」と表示させるテキストを配置すればいいし、 仮に担当者名までテーブルにあるのであれば、御中を会社名につけておくと 「○○会社御中 △△様」 になっちゃいますよね。 で、文字の抽出は、何をどう抽出したいかによるのですが。 よかったら補足してみてください。 わかる範囲でならお答えしたいです。 御中をつけているものだけ抜き出すと言うことであれば クエリのデザインビューで抽出条件を Like "*御中" にすればいいし、御中の付いていないものを抜き出すんであれば Not Like "*御中" にすればいいです。 …ってことではないのでしょうか?

333and333
質問者

補足

ありがとうございます。 それぞれを抽出するのではなく、企業名のみを抽出したかったのです。 言葉不足ですいませんでした。 久しぶりのAccessで、ワイルドカードの使い方もあやしかった為、勉強になりました。ありがとうございました。

noname#4564
noname#4564
回答No.1

取りあえず、下記(1)、(2)のどちらかのSQLを実行すれば、目先の問題は解決できます。 (1) 敬称を追加 UPDATE テーブル名 SET 列名 = 列名 & ' 御中' WHERE Right(RTrim(列名), 2) = '御中' (2) 敬称を削除 UPDATE テーブル名 SET 列名 = Trim(Replace(列名, '御中', '')) ※ ただし、Replace関数はユーザー定義関数(Publicスコープ)でラップしないと、   SQL文の中では使えません。 で、目先の問題はともかく、社名と敬称とがおなじデータにくっついているのは設計的に不適切です。 法人格(有限会社、株式会社、財団、社団、事業団 ...... e.t.c.)、法人名、 敬称、住所、電話番号 ........ e.t.c. をそれぞれ別々の列で定義すれば、今後、このような煩わしい問題に手が掛かることもないでしょう。

333and333
質問者

お礼

ありがとうございます。 早速やってみました。 出来ました! データにつきましては、設計としてそうしたいのは山々なのですが、 以前から使用されているシステムにて、「御中」が入っているか入っていないかで判断をするというものがあり、変更できず困っておりました。 ありがとうございました。

関連するQ&A

  • ACCESSのクエリの抽出

    ACCESS2003を使っています。フォームのコンボボックスに入っているデータを見てクエリで抽出したいと思っています。 フォームのコンボボックスにデータが入っているときは、そのデータで抽出を行い、nullのときは抽出をやめてすべてのデータを表示させたいです。 抽出項目には、null値はありません。 クエリの抽出欄に下記の式を入れましたがうまくいきません。 IIf(IsNull([Forms]![フォーム名]![コンボボックス名])=true , Is Not Null , [Forms]![フォーム名]![コンボボックス名]) コンボボックスにデータが入っている場合は、抽出はうまくいくのですが、nullのときは、何も表示されません。 どこか式が違っているのでしょうか? よろしくお願いします。

  • アクセスでクエリーによる抽出方法

    アクセスの超初心者です。 クエリーのデータをフォームのコンボボックス等のデータを選ぶことにより抽出したいのです。クエリーの抽出条件にフォームのコンボボックスを割り当てて抽出することはできるのですが、例えばクエリーデータは下記のようになっています。  A  B  石川  100 東京  200   沖縄  150 フォームのコンボボックスで石川を選べば  "石川" "100"と表示できますが、コンボボックスに”すべて”という項目をつけてその”すべて”をクリックするとクエリーが全表示になるようにしたいのです。(そのクエリーにはすべてという項目はない) 長くなりましたがおわかりいただけたでしょうか。よろしくお願いします。 また、クエリーを使わず別の抽出方法がありましたら教えてください。というのもいろいろな抽出条件をするのにそのつどクエリーを作らなければならないからです。よろしくお願いします。

  • アクセスのクエリ抽出について

    アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件    "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " ""    データあり3件    "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 "    データなし2件    "" "" 宜しくお願いします。

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

  • ACCESSで、"***"を含むデータを抽出したい

    宜しくお願い致します。 あるフィールドに、"***りんご"、"***みかん"といったように 文字の頭にアスタリスクを含んでいる文字があります。 アスタリスクを含んでいない、"りんご"、"みかん"のような 純粋な文字もあります。 クエリを作成して、頭にアスタリスクが付いている文字だけ抽出したいのですが、Accessだと*印=オールマイティと見なされてしまい、データの抽出ができません。 なにか良い方法はありますでしょうか。。。 宜しくお願い致しますm(__)m

  • アクセス クエリ抽出

    アクセスのクエリについてお伺いします。各フィールド毎に行をずらして抽出条件を入れて、1つでも条件があった場合にはそのデータ全てを抽出するようにしています。その抽出されたデータの中で、条件が一致したものについてのみフォントの色(例えば:赤)を変えて表示する事はできないでしょうか。よろしくお願いします。

  • access の抽出クエリについて

    access 超初心者です。 こんなこともわからずにaccessを触るなと非難されそうですが、 どうしても業務で使いたくて試行錯誤しながら触っています。 どうか助けて下さい。 扱っている商品が多く、管理用のデータベースを作りたいと思っています。 商品登録フォームで、新規登録する際、販売会社ごとに頭文字にアルファベット二文字を、 その後ろに数字を並べようと思っています。 理想は (1)商品コードの欄にアルファベット二文字を入力 ↓ (2)参照を押す ↓ (3)サブフォームに同じアルファベットで始まる商品を表示させて最後の番号をゲット サブフォームから選択して商品名などのデータを既存値として自動で 入力できれば幸せなのですが、そこまで望むにはまだ早すぎかも(汗) 抽出クエリを使うのだろうか・・・など考えているのですが、それなら抽出条件は???と 頭の中が??だらけになっています。 テキストやネットで調べたり、作ってみたりで少しずつ少しずつ理解しているところなのですが、 実践的な使い方までまだまだ程遠くて行き詰まっています。 この具体的な質問のほかに、実践に結びつくaccessの学び方はどのようにすればよいのでしょうか?是非教えて下さい。 ITパスポートは取得していますが、プログラミングは未経験で、accessの質問のやりとりをみていると本当に感心するとともに頭が混乱してしまいます・・・。

  • アクセスでの抽出について

    皆様 よろしくお願いします。 現在 製品の売上を集計していますが、売上一覧の中から特定の製品のみを抽出したいと考えています。 具体的には、製品名は数字とアルファベットの組み合わせ(18桁)となっています。 抜き出したい条件は、製品名の頭数桁(3~10桁程度)です。 例)  抜き出し条件 ・・・ ABC*  抜き出したいデータ ・・・ ABC,ABC11,ABC12 (頭数桁が合致するもの全てを抜き出したいんです) しかしながら、対象となる売上データは2万件程で、抜き出し条件も400件ほどあります。 Excelで断念し、アクセス2000で抽出クエリまではたどり着きました。 抽出の条件をファイルで提供できればできるのかな?と思いましたが、上手く行きません。 上記の他 いい方法があればぜひ教えて下さい!! よろしくお願いしますm(_ _)m

  • アクセスのクエリの抽出について

    当方:XP アクセス2003 アクセスのテーブルで作ったデータを クエリを使って抽出する場合・・・ 1 2 3 という数字で判別しているデータがあり、 1だけを抽出、2だけを抽出ということはできるのですが、 1or2 2or3 というような抽出はできるのでしょうか? よろしくお願いします。

  • アクセスのクエリ 1文字以上を抽出

    アクセスのクエリの抽出条件で、「1文字以上」とする方法を教えてください。 抽出条件をビルドで作ってみたのですが、 勝手にダブルコーテーションがついてしまいます。 1文字以上の値はあるのに何も抽出されません。 sql文は SELECT [テーブル1].[フィールド1] FROM テーブル1 WHERE ((Len([テーブル1]![フィールド1])>"1")); となっています。 ご教授よろしくお願いします。

専門家に質問してみよう