• ベストアンサー

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

  • Accessで入力したキーに一致するレコードをフォームに表示

    テーブルのフィールド名に 支給日、支給番号、業者名、商品名、型番、種類、支給数、単価、があり フォームに 種類、業者名 サブフォームに 支給日、支給番号、型番、商品名、出庫数、単価あります フォームの種類、業者名を入力したあと 一致するレコードをサブフォームに表示させたいです どのようにVBAを書けばいいかご教授ください 宜しくお願い致します。

  • Access2000フォーム/サブフォームにつおて

    Access2000でフォーム/サブフォーム(売上伝票)を作っています。 フォーム(売上伝票メイン)には伝票番号、売上先などを入力・・・ サブフォーム(売上伝票サブ)は商品、数量、金額などを入力します。 そこで質問ですが、サブフォームの商品は商品コード(コンボボックス)を入力すると該当する商品名、単価などを商品台帳から引いてくる、としたいと思い、商品コードの「更新処理後」に以下のコードを記述しました。   Me![商品名] = DLookup("[商品名]", "[商品台帳]","[商品コード]= Forms![売上伝票メイン]![売上伝票サブ]![商品コード]")     サブフォーム上の商品名に商品台帳の商品名を入力するとしたつもりなのですが、何も表示されません。  単価も単位も同様です。  この方法ではだめなのでしょうか?  

  • アクセス2000でフォームに入力したレコードを表示させたいのです

    初歩の質問ですがよろしくお願い致します。 顧客TBを作成して、それを単票フォームで入力 できるようにしています。 同一フォームにサブフォームを設けて入力したレコードを 登録毎にサブフォームへ一覧表示させるにはどうしたらよいでしょうか サブフォームに直接入力していくと可能なのですが できれば上記のような形で行ないたいのです。 それとサブフォームでは編集できないようにすることは出来ますか? 宜しくお願い致します

  • ACCESSのメインフォームとサブフォームについて

    ACCESSで、受注伝票のようなものを作成したいと思っています。受注伝票フォームに受注明細のサブフォームを埋め込んだようなフォームを作ろうとしています。その際、受注伝票と明細に受注コードのフィールドを設け関連づけたいのですが、メインフォームに受注コードを入力したらサブにも同じコードが自動的に振られるようなことはできるのでしょうか。 出来ないのであれば、どのように作ればよいのでしょうか。

  • Access2007 サブフォームの新規レコードをすぐにフォームに表示させる方法

    サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。 すでに入力済みのIDと商品名は表示されます。 ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。 しかし、一旦フォームを閉じて開くと、データは表示されています。 IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。 入力ボタンはこのようにやってみました。 Private Sub 入力_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms!フォーム!ID = Me.ID End Sub または、 Private Sub 入力_Click() DoCmd.RunCommand acCmdSaveRecord Forms!フォーム!ID = Me.ID End Sub ご教授いただければ幸いです。よろしくお願いいたします。

  • access2007 情報入力フォームの作成につい

    メインメニューのレイアウトで、情報入力ボタンと印刷ボタンを設定してあります。 情報入力ボタンをクリックすると「担当・顧客選択メニュー」に移ります。 「担当・顧客選択メニュー」の構成は 担当営業の選択 → コンボボックス 顧客情報(概要) → サブフォーム(担当営業コードで連結) となっており、担当営業を選択すると担当顧客がサブフォームに表示される 様になっています。 サブフォーム上の顧客番号をダブルクリックすると 「顧客情報入力フォーム」の同一顧客番号の情報へと移動し、顧客情報の 追加や編集がでいる様になっています。 今まで、直接「顧客情報入力フォーム」をあけると、画面下のレコード移動ボタンが 1/XXXXとなり、全顧客数と表示されている顧客が何番目の顧客であるかが 表示されていました。 今回、「担当・顧客選択メニュー」から上記の方法で「顧客情報入力フォーム」を 開けるとレコード移動ボタンの表示が1/1となり、その右にフィルタ適用と表示 されます。これの理屈は理解できるのですが、レコード移動ボタンを押すと 2/2となり、真白なブランクフォームが表示されてしまいます。 また、「担当・顧客選択メニュー」からダブルクリックで「顧客情報入力フォーム」へ 移動すると、同一顧客番号で移動しているはずが顧客番号がブランクの画面が 表示されてしまいます。「戻る」ボタンで再度同じ事をやると、今度はちゃんと 表示されます。 これがなぜそうなってしまうのか全くわかりません。 フィルタがかかっている状態で2/2となるのはなぜなのか、 ダブルクリックで同一顧客番号へ移動するはずが顧客番号なしのブランクフォームが 表示されるのはなぜなのか? お心当たりのある方、改善策のヒントを頂ければと思っております。 宜しくお願い致します。

  • Accessでのフォーム入力エラー

    顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。

  • 帳票形式フォームで1対多の一覧を作成する方法

    環境:XP&ACCESS2003 帳票形式のフォームを作成しています。 受注レコード1に対して受注明細レコード多です。 例えば、レポートの様に「並べ替え/グループ化」で 受注NOをグループ化し、受注NOの下に同じ受注NOを持つ受注明細を表示させ、これを、受注NO毎に繰り返すフォームを作成しようとしています。 フォーム/サブフォーム形式で行おうとすると、フォーム/サブフォーム形式は単票フォームでしか適用できない旨、ACCESSからメッセージが出て作成できません。 どの様に作成すればいいか、教えていただけると幸いです。

  • Accessのフォームでの合計欄を二つにわけたい

    テーブル1;売上明細T フィールド名;売上明細番号、商品コード、数量、摘要 テーブル2;商品T フィールド名;商品コード、商品名、単価 クエリで売上明細と商品Tをつなぎ、下記のように表示します。 商品コード 商品名 摘要  数量  単価 明細計                  (数量*販売単価) 001    物件1  作業代  1  500 500 002    物件2  作業代  2  400 800 051    物件51  作業代  1  500 500 051    物件51  交通費  1  350 350  上記クエリを元にフォームを作成(帳票形式)して、 テキストボックスで課税対象計(作業代計)と、非課税対象計(交通費計) のボックスをもちたいのですが可能でしょうか? 最終的には、売上伝票フォームに売上明細フォームをサブフォームで 取り込み、売上伝票上で合計金額を表示させたいと思っています。 よろしくお願いします。

  • ACCESSでのデータ削除について

    XP&ACCESS2003 メインフォーム/サブフォーム形式のフォームで、受注番号で連結しています。 メインフォームが受注、サブフォームが受注明細です。(1対多) サブフォームに削除ボタンをつけて、受注明細のレコードを1件削除するようにしています。以下が削除ボタンのクリック時のプロシージャーです。 DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 クリックした段階で、クエリーで見てみると確かに削除されています。 ただ、フォームを再度開くと空のデータが追加されています。(=削除前とレコード件数は同じ) このサブフォームでは、レコード追加時にフィールド「行」に行ナンバーを入力させるために、隠しで [行NO]テキストボックスを持たせて、自動的に行NOをいれています。 サブフォームの挿入前処理は以下です。 [行NO] = Val(DMax("[行NO]", "Q_受注_工程_明細_行NO") & ".0") + 1 削除してもこの行NOが自動的に別のレコードを追加しているようです。 何か、よい方法をご存知の方、よろしくお願いします。