dポイントプレゼントキャンペーン実施中!

どうしてもわからないので質問させていただきます。

クエリで1から連番振る方法はサイトにアップされているものを数種類拝見させていただいたのですが、私がやろうとしているものはテーブルにインポートしてきたものをクエリで条件指定をして順番に並び替えて、それに1から連番を入れたいのですがうまくいきません。

文章ではわかりにくいと思いますので実際のイメージを書いてみます。まずテーブル名を「席データ」名前を付けてクエリが下のような感じで


お客様NO     名前       色
10000      AAAA      赤
10001      BBBB      青
10002      CCCC      赤
10003      DDDD      青


色を青赤の順番で並ぶように条件を指定して並べ替えて

お客様NO     名前       色
10001      BBBB      青
10003      DDDD      青
10000      AAAA      赤
10002      CCCC      赤

これに連番を振りたいのですがうまくいきません。使用した式は


連番: DCount("*","席データ","[お客様No] <='" & [席データ]![お客様No] & "'")


です。[お客様NO]を[名前]に変えると上から2413という感じで名前の昇順で番号が割り振られてしまいます。どうしたらいいのでしょうか?

説明がわかりずらいと思いますがやり方わかる方いらっしゃいましたらご教授頂ければ幸いです。どうぞよろしくお願い致します。

質問者からの補足コメント

  • ご回答ありがとうございます。
    非常に勉強になります。
    色を青、赤の順番に並ぶようにするために別のテーブルを作って色に順番をつけてリレーションで結びつけてるのですが、色が同じ場合の並び替えの条件の設定がうまくいきません。同じようにリレーションでできるものでしょうか?それともやはり式を書かないと無理でしょうか?
    理解力が乏しく大変申し訳ありませんが、そのあたりを教えていただければありがたいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/12/14 10:16
  • ご返答ありがとうございます。この式を使わせていただきやってみたところ

    お客様NO     名前       色   連番
    10001      BBBB      青    3
    10003      DDDD       青    4
    10000      AAAA      赤   1
    10002      CCCC      赤    2
    となってしまいます。色のリレーションは別テーブルに
    色順番     色種類
     1       青
     2       赤
     3       黄
    といった感じで作ってクエリで「色種類」と「色」をリレーションで結んで順番の条件を作っている感じです。
    実際に並びは順番に並んでいているのに連番はなぜか赤が先にカウントされて次に青の人となってしまいます。私のやり方が悪いのでしょうか・・
    何度も質問をしてご迷惑をおかけして申し訳ありません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/12/15 14:27
  • わかりにくい説明で大変申し訳ありません。
    クエリの画面で

    席データ       色並べ
    ――――      ―――――
    お客様NO      色順番
    名前    ーーーー 色種類
    色 ーーーー|

    といった感じでリレーションで結んで、色順番を昇順で並べて非表示にしています。
    そうすると色がうまく上から並ぶようになったので。
    そのうえで上から1から順番に並べたくて連番を作ってます。
    連番に使った式は
    連番:DCount("*","席データ","[色] & [お客様No] <='" & [席データ]![色] & [席データ]![お客      様No] & "'")
    で連番を表示させています。
    説明が下手で本当に申し訳ありません。

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/12/20 14:33

A 回答 (4件)

やはりDCountでどうして連番になるのか理解できてないようですね。


説明は省略し回答だけ行います。

お客様Noが主キーで重複した値がないと仮定した場合
1.席データのフィールド全てと色並べの色順番、並べ替え順: [色順番] & [お客様No]を入れたクエリを作成する(クエリ1とします)
2.新しいクエリを作成しクエリ1の必要なフィールドと連番: DCount("*","クエリ1","[並べ替え順] <='" & [クエリ1]![並べ替え順] & "'")で連番を作成する
    • good
    • 1
この回答へのお礼

勉強不足で大変ご迷惑をおかけしました。
最後までご丁寧にご教授下さりありがとうございました。
なんとか作成することができました。
書籍などでもっと勉強しようと思います。
今回は助けてくださり本当にありがとうございました。
重ねてお礼申し上げます。

お礼日時:2018/12/21 15:36

質問を整理していただけませんか?


最初は色を青赤の順番で並ぶように条件を指定して並べ替えてとありますが
今度は色順番という新たなフィールドが出てきています。
それに色(色順番)と何で並び替えているのですか?
連番に指定した式はどのようなものですか?
この回答への補足あり
    • good
    • 0

例えば[色]と[お客様No]で並べた場合


DCount("*","席データ","[色] & [お客様No] <='" & [席データ]![色] & [席データ]![お客様No] & "'")
これで連番になりませんか?
この回答への補足あり
    • good
    • 0

DCount("*","席データ","[お客様No] <='" & [席データ]![お客様No] & "'")が何をやっているのかあまり理解できていないようですね。


レコードの[お客様No]の値より小さいレコードの数を数えていますので
[お客様NO]を[名前]に変えて上から2413と名前の昇順で番号が割り振られのは正しいです。
DCount("*","席データ","[色] <='" & [席データ]![色] & "'")とすれば色の昇順になりますが2244となりますので
色が同じ場合の並び替えの条件を設定し2つの条件で抽出すれば連番になると思います。
この回答への補足あり
    • good
    • 0

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

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


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