• ベストアンサー

Accessのフォームで思った順番でレコードが表示されない

こんにちは Accessのフォームで受注管理を作成しています。 メインフォームには ・伝票番号 ・顧客番号、顧客名 ・担当部署、担当者名 サブフォームに ・明細番号、商品ID、商品名、単価、個数、金額 としていますがフォームを開くと伝票番号順にレコードが並ぶのが希望なのですが顧客番号順に並びます。 例)希望 伝票No 1  顧客番号 001 ・・・・・ 伝票No 2  顧客番号 010 ・・・・・ 伝票No 3  顧客番号 009 ・・・・・ 伝票No 4  顧客番号 001 ・・・・・ 現状 伝票No 1  顧客番号 001 ・・・・・ 伝票No 4  顧客番号 001 ・・・・・ 伝票No 3  顧客番号 009 ・・・・・ 伝票No 2  顧客番号 010 ・・・・・ 伝票番号順にしたい場合どこを確認すればよいかご存知の方がおられましたらご教示いただけますようお願いいたします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

Access(データベース)ではレコードの順番というものはありません 何も指定しなければ見つかった順に表示します 顧客番号順というのもたまたまそうなっているだけです 伝票番号順に表示したければそういう並べ替えを指定したクエリをフォームのソースに指定します

MAX106
質問者

お礼

CHRONOS_0様ご返答いただいていたのにお礼が遅くなり申し訳ございません。CHRONOS_0様には直接の回答だけでなくあちこちで参考にさせていただいております。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。

その他の回答 (3)

回答No.4

No.2さんと同じです。 フォームのレコードソースがテーブルの場合でもクエリーを作り、そのクエリーの「並べ替え」で順序を指定する必要があります。 当然のことですが、クエリーの左側に並べ替えの優先順位の高い項目を配置する必要があります。

MAX106
質問者

お礼

ogohnohito様ご返答いただきましてありがとうございます。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。 左側に優先順位があるとは知りませんでした。教えていただいたことも踏まえて一度挑戦してみたいと思います。

noname#140971
noname#140971
回答No.3

売上伝票: ID__伝票番号__顧客番号__担当者ID _1_________1_________1_________1 _2_________2________10_________1 _3_________3_________9_________2 _4_________4_________1_________2 売上伝票明細: 売上伝票_ID__行番号__商品_ID__品名__単価__数量 __________1_______1________1__A_____\100_____1 __________1_______2________2__B_____\100_____1 __________2_______1________3__C_____\100_____1 __________2_______2________4__D_____\100_____1 __________2_______3________1__A_____\100_____1 __________3_______1________2__B_____\100_____1 __________4_______1________3__C_____\100_____1 1、売上伝票.ID<=>売上伝票明細.売上伝票_ID 2、売上伝票.伝票番号<=>売上伝票明細.伝票番号 伝票番号の随時訂正を考えてタイプ1にするか連鎖更新を想定してタイプ2にするかは好み。 なお、ここでは<明細番号=行番号>というとらえ方をしています。 さて、質問の件ですが、通常は、ウィザードをフォームを生成すれば<売上伝票.ID>順に並びます。 売上伝票: ID__伝票番号__顧客番号__担当者ID _1_________1_________1_________1 _4_________4_________1_________2 _3_________3_________9_________2 _2_________2________10_________1 と、テーブルを[顧客番号]で並べ替えても、やはり、<売上伝票.ID>順に並びます。 ということは、主キーの順番とレコードの生成順番が違っているのでしょうね。 主キーを<売上伝票.ID>ではなく<売上伝票明細.伝票番号>にされているようですので、このように推測できます。 レコードソース=売上伝票 レコードソース=SELECT * FROM 売上伝票 ORDER BY 売上伝票.伝票番号; メインフォームのレコードソースのビルドボタンをクリックしてこのようなレコードソースを生成します。 これで、主キー順番、レコードの生成順番に関係なく常に<売上伝票.伝票番号>で整列して表示されます。

MAX106
質問者

お礼

Husky2007様ご返答いただいていたのにお礼が遅くなり申し訳ございませんでした。 皆さんからいただきました回答ですとクエリを作成するのが一般的な作成方法のようですのでクエリを作成してみます。 Husky2007様の方法も一度今後のために試してみたいと思います。 ありがとうございました。

  • tryouts
  • ベストアンサー率31% (126/404)
回答No.1

フォームが参照しているクエリに並び替え順というのがありませんか? ここで昇降順を設定した記憶があります。 7年前にいじっていらいAccessは触っていないためうろ覚えですが。

MAX106
質問者

お礼

tryouts様ご返答いただいていたのにお礼が遅くなり申し訳ございません。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。

関連するQ&A