使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
こんばんは。ざっくりですが、
フォームのLoadイベントで、ColumnプロパティやOrderByプロパティの設定をしてみましたが
期待する動作をしているように見受けられました。
実際にはどのような処理が実行されているのでしょう。
a2010で新規に作成したサンプルでも同じようになってしまうのでしょうか?
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Windows XP & Access 2003 で作成した社内用のプログラムを、Windows 7 & Access 2010 に移行しようと試みています。照会条件を指定して照会を実行すると、別フォームで該当のデータをデータシートビューで一覧表示するフォームがあります。照会結果は問題無いのですが、列幅を変えたり、列順を変えたりして閉じた後、再度表示した際に、列幅、列順の変更が反映されません。
以前の環境(Windows XP & Access 2003)では、列幅、列順の変更は保存され、再度表示すると反映されています。
調べたところ、結果一覧フォーム読み込み時のイベントプロシージャで、一覧の並び順を設定しているのですが、そこをコメントアウトすると、列順、列幅の変更が保存できる様になります。
但し、要件として、照会条件を基に結果の並び順を設定したいのと、複数のユーザが使用する為、結果一覧の列幅、列順はPC毎に任意に設定可能としたいのです。
実際に、Windows XP & Access 2003 では実現出来ていたのですが、Windows 7 & Access 2010 では同じ方法(コード)では出来なくなっています。
Access 2010 での実現方法があれば教えて下さい。
以上
使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
こんばんは。ざっくりですが、
フォームのLoadイベントで、ColumnプロパティやOrderByプロパティの設定をしてみましたが
期待する動作をしているように見受けられました。
実際にはどのような処理が実行されているのでしょう。
a2010で新規に作成したサンプルでも同じようになってしまうのでしょうか?
これはアクセス2010のバグです。
解決策は以下の通りです。
以下の手順でこのバグを回避し、移動したカラムの設定を保持することが出来ます。
1.データシートでリストを開き、カラムを移動・列幅調整します。
2.移動したカラムを隠して下さい。
-カラムを隠すには、プロパティでVisibleをNoにします。
3.保存して、一旦、閉じます。
4.再度開き、隠したカラムを見えるようにして下さい。
-2.でYesにしたVisibleをYesにします。
VBAなどで対応している方が多いようですが、この方法が楽です。
私もデータシートの列幅や列の順序を覚えてくれない事に悩みました。が、本日解決しました。
(不要な)フォームヘッダーがあれば削除してみて下さい。勿論全ての環境で解決するかどうか分かりません。又、スレ主さんには遅きに失していると思われますが同じ様に悩んでいる方の力になれれば幸いです。
うーん。再現しないですね。
何かほかに起因するものがあるのだろうか。
当たり前ですけど、accessファイルが読み取り専用であるときだけです。
テスト用に、テーブルx1、フォームx1で作成しても、再現します。
再現手順は以下の通り。
1)3項目(fld_1~fld_3)のテーブル(tbl_1)を作成する。
2)上記テーブルをデータソースとする、データシートビュー形式のフォーム(frm_1)を作成する。
3)Form_Load イベントプロシージャに以下2行記入する。
Me.OrderBy = "fld_x" ※項目名を任意に指定
Me.OrderByOn = True
4)フォーム(frm_1)を表示する。
5)列幅、列順を任意に変更し、閉じる。
6)再びフォーム(frm_1)を表示すると、上記5)で変更した列幅、列順が反映されず、上記4)と同じ状態で表示される。
※因みに Access 2000,2003,2007 では何れも5)の変更が反映された状態で表示される。
Form_Open、Form_AfterLayout等、別のイベントで試したが変わらなかった。
7)上記3)のコマンドをコメントアウトする。
8)フォーム(frm_1)を表示する。
9)列幅、列順を任意に変更し、閉じる。
10)再びフォーム(frm_1)を表示すると、上記9)で変更した列幅、列順が反映されている。
※但し、当然並び順はNG。
やりたい事(Access2007迄は実現できていた事)は、データシートの並び順を任意に(照会条件を基に)設定し、その上で列幅、列順を任意に変更&記録です。
以上