ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3969553 Accessのフォームで思った順番でレコードが表示されない
質問者:MAX106 こんにちは
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 ・・・・・

伝票番号順にしたい場合どこを確認すればよいかご存知の方がおられましたらご教示いただけますようお願いいたします。
困り度:
  • 困っています
質問投稿日時:
08/04/23 11:50
この質問に対する回答は締め切られました。

回答良回答10pt

ANo.4 No.2さんと同じです。
フォームのレコードソースがテーブルの場合でもクエリーを作り、そのクエリーの「並べ替え」で順序を指定する必要があります。
当然のことですが、クエリーの左側に並べ替えの優先順位の高い項目を配置する必要があります。
回答者:ogohnohito
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/05/05 10:17
この回答へのお礼ogohnohito様ご返答いただきましてありがとうございます。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。
左側に優先順位があるとは知りませんでした。教えていただいたことも踏まえて一度挑戦してみたいと思います。

回答

ANo.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 売上伝票.伝票番号;

メインフォームのレコードソースのビルドボタンをクリックしてこのようなレコードソースを生成します。
これで、主キー順番、レコードの生成順番に関係なく常に<売上伝票.伝票番号>で整列して表示されます。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/04/23 12:58
この回答へのお礼Husky2007様ご返答いただいていたのにお礼が遅くなり申し訳ございませんでした。
皆さんからいただきました回答ですとクエリを作成するのが一般的な作成方法のようですのでクエリを作成してみます。
Husky2007様の方法も一度今後のために試してみたいと思います。
ありがとうございました。

回答良回答20pt

ANo.2 Access(データベース)ではレコードの順番というものはありません
何も指定しなければ見つかった順に表示します
顧客番号順というのもたまたまそうなっているだけです

伝票番号順に表示したければそういう並べ替えを指定したクエリをフォームのソースに指定します
回答者:CHRONOS_0
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/04/23 12:28
この回答へのお礼CHRONOS_0様ご返答いただいていたのにお礼が遅くなり申し訳ございません。CHRONOS_0様には直接の回答だけでなくあちこちで参考にさせていただいております。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。

回答

ANo.1 フォームが参照しているクエリに並び替え順というのがありませんか?
ここで昇降順を設定した記憶があります。
7年前にいじっていらいAccessは触っていないためうろ覚えですが。
回答者:tryouts
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/23 12:27
この回答へのお礼tryouts様ご返答いただいていたのにお礼が遅くなり申し訳ございません。クエリを使わず直接テーブルを読みに言っていたのが原因のようですので一度クエリを作成してからやってみたいと思います。