こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【access】テーブルの項目順が意図せず変わる

access2010を使用しています。

ローカルテーブルの項目順について質問します。
詳しい方、ご教示ください。

デザインビューで表示される項目順とデータシートビューで表示される項目順が、意図せず変わる事象が時折発生します。
※デザインビューに1、2、3の順で並んでいるものが、データシートビューだと1、3、2の順になっている

テーブル定義はデザインビューのもので作成しているので、そちらの項目順でデータシートビューでも表示したいのですが、なぜ意図せず変わってしまうのかが分かりません。また、解決方法も分からないです。

【補足】
・テーブル:ローカルテーブル
・テーブル定義を登録した直後は意図した項目順で表示される
→VBAやQueryを実行した後にデータシートビューで確認すると項目順が変わっていることがある。(必ず変わっているわけではない)

どなたか、ご教示頂けないでしょうか。

投稿日時 - 2017-09-22 19:08:07

QNo.9377548

すぐに回答ほしいです

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

すみません。言葉の訂正です。回答の下のほうで、

>あるいは、データシートを表示した状態で、
>フォームのフィールド名のところにマウス
>を当て、下向きの矢印になったら横にスライド
>させてフィールドをすべて選択して、コード表の
>書式から「列の固定」を選択してはどうでしょう。

のところで、「コード表」となっていますが、この場合は
「Access本体のツールバーの書式から」です。「コード表」
は抜かしてください。

投稿日時 - 2017-09-26 11:07:56

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(4)

ANo.3

>デザインビューで表示される項目順とデータシートビューで表示される項目順が、
>意図せず変わる事象が時折発生します。

実は、データシートビューは結構いかげんに
フォームを設定してもデータシートビューを
選択するときれいにデータシートビューとして
表示されます。たとえば、フォームのデザインビューで
詳細を大きく開き、そこにテキストボックスを適当な
大きさで、しかもすべて重ねてもフォームをデータシートビュー
で選択すると、そのままきれいにデータシートビュー
が表示されます。この場合、フィールドの順序は
テキストボックスが作成された順に左から並べられます(たぶん)。

また別の場合、たとえば、フォームのレコードソースを設定し、
表示されたレコードソースのフィールドを適当に選択し、適当に
デザインビューの詳細に放り込むと放り込んだ順にデータシート
ビューで順番に並んでいきます。つまりテーブルで設定した
順番にはならずに、です。

そこで、
>デザインビューで表示される項目順とデータシートビューで
>表示される項目順が、意図せず変わる事象が時折発生します。
この事象がどのような経緯で起きるのか、実際に遭遇したことが
ないので分かりませんが、データシートビューにはフィールドの
並びに関するColumnOrderというプロパティがあります。これは
フィールドの順序、すなわち左から何番目という設定を
行なうプロパティです。このプロパティが何らかの理由で
入れ替わったのでは、と思われます。それを再現するには
実際のプログラムを使ってみなければならないのですが。
それは無理として、並びを固定する方法はいくつかありますが、
たとえばフォームを開くときのイベントで、

Private Sub Form_Open(Cancel As Integer)
  Me!フィールド1.ColumnOrder = 1
  Me!フィールド2.ColumnOrder = 2
  Me!フィールド3.ColumnOrder = 3
End Sub


のようにしてみてはどうですか。この場合
フィールド1などはテキストボックスの名前
です。

あるいは、データシートを表示した状態で、
フォームのフィールド名のところにマウス
を当て、下向きの矢印になったら横にスライド
させてフィールドをすべて選択して、コード表の
書式から「列の固定」を選択してはどうでしょう。
ただし、こちらの方法はお呪えが効くかわかりません。
確認してみてください。また、ファイルを閉じて
再度開いたときに同じような操作をした場合に
フィールドの順序の変化が起こるのか確認してみて
ください。

以上の二つがありますが、コードで設定しておくのが
いいような気がします。

投稿日時 - 2017-09-26 09:28:41

ANo.2

【補足】並びの継承は一般的!

 例えば、《ポケモンGo》では捕獲したポケモンを《日付》《お気に入り》《番号》・・・《強さ》で並び替えて表示することができます。で、一旦並び替えると《サインアウト》しない限りで、その並びは継承されます。Accessでも同じです。例えば、テーブルを表示して[レコード]-[並び替え]を実行し保存。すると、その並びは継承されます。このような《並びの継承》は、ユーザー意思の継承です。そういう意味では、極めて一般的で当然のこと。

 なお、《並びの継承》がアプリケーションの開発で邪魔になることは皆無と言えます。なぜなら、通常は、フォームやレポートのレコードソースには、クエリではなくてSQL文を書くからです。そして、必要であれば《ORDER BY 節》も書きます。

 クエリは、単なる簡便な参照ツールとして利用し、アプリケーションの開発はSQL文主体で行う。こういうマイルールがある限り、《並びの継承》は邪魔ではないと思いますよ。

 ちょい、《並びの継承》に関する私見を補足しておきます。

投稿日時 - 2017-09-24 13:02:19

補足

ご回答頂きありがとうございます。
説明不足で申し訳ないのですが、意図せず変わってしまうのはソートではなく項目の順序(列)です。

例)当初以下のように定義したとします。
■デザインビューのイメージ
項目1 テキスト型
項目2 テキスト型
項目3 テキスト型

■データシートビューのイメージ
項目1|項目2|項目3
↓↓↓
QueryやVBAの処理を行った後確認すると・・・

■デザインビューのイメージ
上記と同様

■データシートビューのイメージ
項目1|項目3|項目2

このように、項目(列)の順序が意図せず変わってしまっていることがあり、原因が分からず悩んでいます。ソート順に依存するのでしょうか。
Order By句で指定している項目が先頭に移動してしまうことがあるということでしょうか。

投稿日時 - 2017-09-24 16:02:42

ANo.1

Q、テーブルの項目順が意図せず変わるのを防ぐには?
A、常に意図的に並べることです。

>VBAやQueryで並びを変えると、それが継承される。

Accessは、そういう仕様だということです。ですから、それを意識して《常に意図的に並べる》ことが必要です。

投稿日時 - 2017-09-22 21:18:56

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-