プロが教えるわが家の防犯対策術!

こんにちは
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 ・・・・・

伝票番号順にしたい場合どこを確認すればよいかご存知の方がおられましたらご教示いただけますようお願いいたします。

A 回答 (4件)

Access(データベース)ではレコードの順番というものはありません


何も指定しなければ見つかった順に表示します
顧客番号順というのもたまたまそうなっているだけです

伝票番号順に表示したければそういう並べ替えを指定したクエリをフォームのソースに指定します
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/07 13:45

No.2さんと同じです。


フォームのレコードソースがテーブルの場合でもクエリーを作り、そのクエリーの「並べ替え」で順序を指定する必要があります。
当然のことですが、クエリーの左側に並べ替えの優先順位の高い項目を配置する必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/07 13:48

売上伝票:



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

メインフォームのレコードソースのビルドボタンをクリックしてこのようなレコードソースを生成します。
これで、主キー順番、レコードの生成順番に関係なく常に<売上伝票.伝票番号>で整列して表示されます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/05/07 13:21

フォームが参照しているクエリに並び替え順というのがありませんか?


ここで昇降順を設定した記憶があります。
7年前にいじっていらいAccessは触っていないためうろ覚えですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/07 13:35

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

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

関連するカテゴリからQ&Aを探す


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