• ベストアンサー

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。 IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。 いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。 元のテーブルに入力されているIDを変更することなく、 クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。 宜しくお願い致します。

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

  • ベストアンサー
  • tamu1129
  • ベストアンサー率58% (1251/2138)
回答No.5

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。 関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます 単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します 全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです 先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。 数値8桁の項目に01234567と入れたら実際は1234567値で関数結果もそれに従う。 こんなことは確認していると思うので、どこか見間違いがあるか、です。 可能なら関数式と実行値を提示して下さい。

mugigohan
質問者

補足

>>8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。 確かに、8桁や7桁だったりばらばらです。 7桁しか入力されていないのにLeftで7桁取り出すのは不可能なのですか? その場合は、どのような式になるのでしょうか? Excelみたいに、IF(Len[ID]=7,"",left(7))みたいな感じにすればよいのでしょうか。 宜しくお願いいたします。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

ANo.3で図が間違っていました。 すみません 差し替えます。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

クエリーデザインで表示項目を設定すると、他の項目は表示されません。 図のように必要な項目をドラッグします。 全ての項目の場合は * をドラッグします。

  • tamu1129
  • ベストアンサー率58% (1251/2138)
回答No.1

クエリの中に演算フィールド作ってやれば抽出できますよ 関数はExcelと同じ left関数使えばいい クエリのフィールド部分に 抽出:left([ID],7)  ID部分は自分のテーブルの該当するフィールド名に置き換えて その他の部分には何も入力せず、表示の部分だけチェックが入っている事確認してクエリを実行してください 抽出というフィールド名に、IDから左から7文字取った全レコードが表示されるはずです このクエリにそれ以外に抽出したいフィールドを加えてクエリを修正していけば、どこで自分が作成したクエリに問題が有るのかわかるでしょう 作成してるクエリに問題があるので思っている動作をしてくれないんだと思いますよ

mugigohan
質問者

補足

データーは7桁だったり、8桁だったり、ばらばらなのですが、Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。 何か原因があるのでしょうか。関数のウィザードを使用して、式を入力しているので、私自身の式自体が誤っているのかもしれません。(ウィザードだと余計なものまで入ってくるので、取り合えず削除して見ます。)

関連するQ&A

  • Access不一致クエリについて

    不一致クエリを使用して二つのテーブルにある両方のテーブルに存在しないレコードを抽出しようとしています。 各テーブルに数値が入っていてその数値に違いがある分に関しては不一致クエリによって表示されるのですが、一つのテーブルのレコードは”0”でもう一つのテーブルには ”10”と入っているレコードの抽出ができません。 初歩的な事で申し訳ないのですが、お知恵をかしてください。

  • Accessのクエリーで、mymax関数を使ったら

    1)Accessのクエリーで、1レコード内の複数フィールドの数値の最大値を表示させるため、「mymax」関数を使用しました。 その結果が数値型でなくテキスト型で表示されてしまうため、分析に不都合で 2)テーブル作成クエリーにしてテーブルにしてから、テーブルデザインで数値型に変更し、 3)それを抽出クエリーで並べ替えなどデータ分析に使用しています。 以上のように、3段階の手順をふまず、 1)の時点で、最大値を、数値型で吐き出させることはできますでしょうか。 バージョンはACCESS97です。 どうぞ、よろしくお願いします。

  • ACCESSクエリーの抽出条件について

    OS WIN7 ACCESS 2007使用です。 クエリーの抽出条件について何ですが、テーブルにコードというフィールドがありまして、そこには数値が入力されています。 コード 1 2 3 4 5 ・ ・ このテーブルを元に選択クエリーを作りたいのですが、条件としてコードの値に2と3両方がある場合、2のレコードだけを表示せず、どちらか一方の数値だけの場合またはどちらもない場合は、全てのレコードを表示するようにしたいのです。 抽出条件はどのように書けばよいのでしょうか? いろいろ試したのですが、うまくいきません。 どなたかお助け下さい。

  • ACCESS2003 数値や文字列のあいまい検索

    フィールド内に入力されている文字列から、「ひらがな」や「英語」が入力されているレコードの抽出について質問です。 ※[ニックネーム]のフィールドは、英数カナ文字が混在しています。 ======================== (テーブル) [ID]  [ランク]  [ニックネーム]  1     A     123456789 2     B     akb48   3     A     ああああ    4     B     987654321     5     C     かかか123   6     B     112233    7     C     445566      8     A     778899xyz    ======================== ☆上記のテーブルから、[ニックネーム]に「ひらがな」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  3     A     ああああ    5     C     かかか123    ======================== ☆上記のテーブルから、[ニックネーム]に「英語」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [ランク]  [ニックネーム]  2     B     akb48    8     A     778899xyz ======================== 上記のように、クエリでの条件を指定して抽出結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • 【SELECT文】左の3桁内が数値か否か判断する方法を教えてください。

    初めて投稿させて頂きます。よろしくお願いします。 表題の件ですが あるAテーブルの項目の属性がCHAR型で左から3文字内で数値のみの場合と英字が含まれている場合とで判断をしたいのですが。 成功イメージ例 Aテーブル --------------------- TEST(フィールド) 1234567 12A4567 BN34567 左から3桁内数値だけ選択 結果>>>>'1234567'のレコード1件を抽出 ------>SELECTで左3桁内数値のものだけ抽出したいのですが。 SUBSTR(TEST,1,3)で左の3文字を切り離したのですが、行き詰ってしまいました。 わかりづらい説明で申し訳ございませんが、よろしくお願いいたします。

  • Access クエリとテーブルの合計値を一緒に表示

    クエリの合計値と親テーブルの合計値をフォーム上にて表示したいのですが、 うまく行かずに困っています。 クエリにて抽出した値の合計 Sum([Q抽出クエリ],[利用金額]) と、 抽出前の合計 Sum([T検索履歴],[利用金額]) を両方表示させたいです。 現状は下記の通りです。 ■使用テーブル・使用クエリ テーブル  [T検索履歴] ------- フィールド [検索履歴ID] [キーワード] [利用金額] クエリ   [Q抽出クエリ] …T検索履歴から特定のキーワードを含むレコードを抽出 フィールド [検索履歴ID] [キーワード] [利用金額] ■フォーム フォームのレコードソース … [Q抽出クエリ] ■現状と問題点 (1)[Q抽出クエリ]にて、キーワード『保護』を含むレコードを抽出します。 (2)抽出されたレコードの[利用金額]を、非連結テキストボックス tBox1 に表示します。 式:tBox1のコントロールソース =Sum([利用金額数]) (3)全体の利用金額合計を知るために、 [T検索履歴]の[利用金額]の合計値を非連結テキストボックス tBox2 に表示させます。 (ここが望む結果になりません。) 式:tBox2のコントロールソース =Sum([T検索履歴],[利用金額数]) 実行した結果 tBox1 … 抽出されたレコードの[利用金額]合計を表示 tBox2 … 上に同じ 望んだ結果 tBox1 … 抽出されたレコードの[利用金額]合計を表示 tBox2 … [T検索履歴] の[利用金額]合計を表示 以上、どうしたら良いのか分からず困っています。 宜しくお願い申し上げます。

  • Accessクエリ

    お世話になります。 Access初学者です。 グループごとに日付が最大のレコードを、それぞれ1件抽出するクエリを作成したいと思っています。 IDを表示させなければできるのですが、IDを表示させると全レコードが抽出されます。どのようにすればいいのでしょうか? よろしくお願いします。

  • Access2003 一つのクエリで結果を出したい

    お世話になります。 下記テーブルを紐付けてクエリを作成します(Access2003)。 受注テーブル  ・ID  ・コード  ・数量 検品テーブル  ・ID  ・コード  ・検品フラグ マスターテーブル  ・ID  ・コード  ・印刷フラグ 検品テーブルのレコードは、受注テーブルの数量合計が展開されたレコード数となります。例えば、AAAというコードで数量合計が8の場合、検品テーブルではAAAのレコードが8レコード存在することになります。 但し、マスターテーブルの印刷フラグがYesとなっているものは、数量がいくつあっても受注テーブルは1レコード作成されます(数量合計で展開しない)。  受注テーブル   ID コード 数量   1  AAA   5   2  AAA   3   3  BBB  100  検品テーブル   ID コード 検品フラグ   1  AAA   Yes   2  AAA   Yes   3  AAA   Yes   4  AAA   Yes   5  AAA   Yes   6  AAA   Yes   7  AAA   No   8  AAA   Yes   9  BBB   Yes  マスターテーブル   ID コード 印刷フラグ   1  AAA   No   2  BBB   Yes こんな感じです。 そこで各テーブルをコードで紐付けてグループ化し、検品フラグYesで抽出した状態で以下の結果を表示出来るようにしたいところです。 コード 数量合計  AAA   7  BBB  100 要するに印刷フラグがYesのものは受注テーブルの数量合計を表示し、それ以外は検品された数を表示させたいと考えています。 あらかじめ受注テーブルでコードでグループ化し、数量の合計を算出するクエリ(※1)を作成し、そのクエリと検品テーブル、マスターテーブルを紐付けたらうまく表示出来ました。 ※数量合計はIIFで印刷フラグ=Yesの場合は※1の数量合計を、Yesではない場合は検品テーブルのレコードカウント数を表示。 しかし、できれば一つのクエリで上記の結果を表示させたいのですが、可能なのでしょうか。 ご教授お願い致します。

  • Accessのクエリでレコード追加

    Access初心者です。 バージョンは2010をつかっています。 テーブルを14テーブル含み、フィールド数が100ほどある選択クエリを作りました。 抽出条件などは設定していません。 このクエリで新しくデータを入力、レコードを追加し、上書き保存した後クエリを閉じます。 それからまた、そのクエリを開くとレコードが追加されていません。 テーブルにはその入力したデータは追加されています。 このクエリにもそのデータを追加表示させるためにはどうすればいいですか? 表示されない原因はなんなのかお教えお願いします。

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。

専門家に質問してみよう