• 締切済み

Access クエリ 文字列の一部を抽出して表示

Access クエリの 文字列の一部だけの抽出についてお尋ねします。 Accessクエリにて、『配達先』フィールドの文字列が長いため、『配達先』フィールドの一部の文字を抽出してクエリに表示したいのですが、どのようにすればよろしいでしょうか? 抽出前 ⇒ 抽出後の順で記載します。 (1):営業部○○課消耗品置き場 ⇒ ○○課 ※○○課消耗品置き場で終わる文字列の場合は、営業部の1字後ろから消の1字手前までを抽出する (2):営業部○○課消耗品置き場(△△係)⇒ △△係 ※○○課消耗品置き場の後に()がある場合は、()の中の文字列だけを抽出 (3):営業部◇F○○課消耗品置き場 ⇒ ○○課 営業部◇F○○課(△△係)⇒ △△係 ※○○課の前に◇F(フロア)がある場合は、◇Fの後ろから(1)か(2)を適用する お分かりの方がいらっしゃいましたら、ご回答のほどよろしくお願い申し上げます。

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

>(1):営業部○○課消耗品置き場 ⇒ ○○課  (2):営業部○○課消耗品置き場(△△係)⇒ △△係  (3):営業部◇F○○課消耗品置き場 ⇒ ○○課 ★もしこれらの処理がExcelで出来るなら、  変換の結果をAccessにインポート

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

Excelで文字列操作関数を駆使して、お考えのような処理が出来たのでしょう。 AccessにはSEARCH関数、FIND関数は文字列操作関数はありません。あるのは演算子の& 添付図をご覧ください 可能なら他の方が仰っているように、顧客マスタのテーブル設計から再挑戦されませんか puku_oh_pu様の提案の「配達先略称」もいただきです 得意先マスタ ・ID ・配達先略称 ・顧客名(肩書も含めて入力) ・顧客部名 ・顧客課名 ・ご担当名(ご担当名に様、殿、御中等の)敬称も入力します ・登録日 ・最新取引日 クエリで横の演算ができます フィールド欄に  配達先:[顧客名]&[顧客部名]&[顧客部名&[ご担当名] ・登録画面は[配達先略称]を使い  先方への書類は郵便番号、住所を含めて配達先を使います

回答No.2

テーブル『配達先』のレコード数はいくつあるのでしょうか? (『配達先』は何か所あるのでしょうか?) 100ぐらいなら、新しくテーブル『配達先略称』等を手入力で作ったほうが早いと思います (あるいは既存のテーブルにフィールド『配達先略称』を追加)

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

文字列の中から特定の文字を抜き出すことが可能な関数はあったはずですが一つでは無理っぽい?関数のパラメーターに関数を入れるとかしないと駄目かな?そうするとクエリーを開くときにものすごい時間がかかりそう。もしくはエラーで開けないか。 私なら・・・ですが、VBA(モジュール)で欲しいデータが入っているテーブルから作業用の類似した構造のテーブルへ該当レコードをコピーする関数を作ります。 そのほうがクエリーでは実現不可能な抽出条件にも柔軟に対応できますからね。 文字列の中から特定の文字列の位置を返す関数:InStr() 文字列の中の特定の位置から文字列を取り出す関数:Mid$() もし列の中の指定位置の文字を任意の文字に置き換える関数:あったかな? ネットを検索すればVBA(モジュール)でデータベース内のテーブルのオープンのやり方とかレコード操作などの関数の使い方が見つかると思います。 Dim DB As Dtaabase Set DB = CurrentDB() って感じでデータベース(*.mdb)を開いてその中のオブジェクト(テーブル)をSQLで記述して開いてTabel.MoveNextで次のレコードに移動してカレントレコードのField(列)の値を参照したりする。 列の値を更新するときは・・・そういうデータベース操作系のステートメントがあったと思う。 クエリーで可能だったとしても、抽出処理に物凄く時間がかかるかもしれない。数十分とか言うレベルではなく最低でも数時間・・・とか?もしかしたら数日かかるかもしれない。だったらモジュールぶプログラム組んだほうが速い。 そもそもの話になりますが、テーブルの設計に失敗していると思います。 エクセルの感覚でテーブルを作成してしまうとこういう事になりやすい。作ったときはそれで問題ないと深く考えていないんだと思いますが、どのように活用するか詳しくリサーチしておかないと後々苦労することになってしまいます。

関連するQ&A

  • アクセス クエリー 抽出条件について

    アクセス クエリー 抽出条件について たとえば文字列で5桁の仕入先コードフィールドが有るとします。で1と3と5を除くレコードを表示させたいときは 抽出条件をどの様に設定したらよろしいでしょうか?

  • アクセスクエリ ハテナを抽出するには

    テーブルは 文字(フィールド) ? あ となっていて、 クエリで SELECT [テーブル1].文字 FROM テーブル1 WHERE ((([テーブル1].文字) Like "?")); とすると、 ? あ が抽出されます。 ?がワイルドカードとなり、1文字の文字列を抽出する、という条件になってしまったためだと思われますが、ワイルドカードではなく、ハテナとして抽出したい場合はどうすればいいでしょうか? エクセルのように、Like "~?"としたら、何も抽出されませんでした。

  • Accessクエリの抽出条件に関するご質問

    Accessクエリの抽出方法に関し、以下のようなことはできるのでしょうか? 特定のフィールド内にカタカナ文字列のみのレコードがあった場合、別のフィールド内の対応するレコードの中身を検索し、ヒットした場合の横の文字列(左横、右横どちらか)がカタカナだった場合のみ抽出させたい。 (例) テーブル名:TEST フィールド:「No」、「文字列」、「例文」 No   文字列          例文 1   ああああ      あいああああお。 2   あアああ      あいあアああお。        3   アアアア       あイアアアアお。 4   アああア       あイアああアお。 5   イイイイ        イイイイアアお。 6   漢字漢字      あイ漢字漢字お。 7   ウウウウ      あウウウウ字お。 <抽出結果> No   文字列          例文       3   アアアア       あイアアアアお。 5   イイイイ        イイイイアアお。 ・No3は、文字列がカタカナのみ、例文中にヒットし、ヒットした左の文字がカタカナ「イ」である。 ・No5は、文字列がカタカナのみ、例文中にヒットし、ヒットした右の文字がカタカナ「ア」である。 ※No1,2,4,6はそもそも文字列がカタカナのみじゃない為、抽出しない。 ※No7は、文字列がカタカナのみ、例文中にヒットしたが、ヒットした左右の文字列がカタカナじゃないため抽出しない。 非常にわかりづらくてすいません。 こんな複雑なことができるかわかりませんが、ご教示のほどよろしくお願いいたします。

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

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

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

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

  • レコードの文字列をフィールド抽出のクエリとして指定

    レコードの文字列として リンゴ ミカン イチゴ となっていたときに、この3つを別のテーブルにあるフィールド名のリンゴ、ミカン、イチゴのみを抽出するクエリをVBAで指定できますか?

  • アクセスのクエリ

    アクセスのクエリで、 ある会社に"課"という組織があり、1つの課に1係、2係、3係とあります。 1-1,1-2,1-3,2-1,2-2,2-3...とします。 アクセスのテーブルが2つあり、1つは、消費テーブル、もう1つは、注文テーブルです。 消費テーブルのフィールドは、"年月日"、"課と係(1-2など)"消費量" 注文テーブルのフィールドは、"年月日"、"課(1など係は考えず課だけで考える)"、"注文"となっています。 この消費テーブルと注文テーブルの"年月日"は同じ日ではありません。 これを月ごとに、例えば2009年10月分の1課の消費量の合計(1,2,3係合計)、注文数の合計、その差をクエリを使って表示させる様にするにはどうしたらいいですか? エクセルにてイメージを作ってみました。 誰か教えて下さい。よろしくお願いします。

  • Access 計算フィールドに対するクエリの抽出について

    初歩的な質問かもしれませんが、お願いします。 クエリで、計算を出した列に対して抽出をかけることはできないのでしょうか。 [商品CD][商品名][単価][個数] と、4つの列フィールドを選択クエリに表示し、 5列目に以下のフィールドを挿入しました。 式1: [単価]*[個数] この“式1”に対して1,000以上のレコードを抽出かけたいのです。 >=1,000 と抽出条件に入れてもダメです。 どうしてでしょうか。 また、どうすればいいのでしょうか。

  • ACCESSでの抽出について

    単純なクエリの抽出なのですが・・・。 区フィールド、町フィールドをクエリで作成して そのクエリを元に抽出フォームを作成しました。 そして、クエリの抽出条件に以下の式を入力しました。 Like "*" & [Forms]![F_抽出]![区] & "*" Like "*" & [Forms]![F_抽出]![町] & "*" しかし、大本のデータに [区]フィールド→品川区 [町]フィールド→空白 ・・・と、どちらかが空白の場合、そのレコード を抽出してくれません。 このように、空白フィールドを持つレコードをも 抽出するにはどのようにしたらようですか? 初歩的な質問で申し訳ありませんがよろしくお願いいたします。

  • [Access]クエリの抽出条件について

    アクセス初心者です。よろしくお願いします。 クエリの抽出条件に別テーブルのフィールドをあいまい検索で入れたいのですが方法がわかりません。 データシートビューには検索したいテーブル(tbl_1)と 検索する文字列が入ったテーブル(tbl_2)の2つを表示させています。 デザイングリッドは検索したいフィールドを表示し、 抽出条件にLike "*[tbl_2]![フィールド名]*"と入れましたが該当するものがあっても表示されないのです。 どうしたらよいでしょうか。ご伝授ください。

専門家に質問してみよう