ひッさしぶりにAccess開発を自分で担当しています。
今回は、既存システムの小規模な改修作業なので外部委託せず、自ら作業しています。
システム設計やDB設計は、ちょいちょいやっていましたが、ファームやレポートまで作成するのは、数年ぶり。だいぶ勘が鈍くなっています。
そして早速ひっかかりました。orz
フォームをデータシートビューで表示する際、列の順番が思惑とおりに保存されない。
簡単に言いますとA列、B列、C列、D列、E列となっているものをE列、A列、B列、C列、D列に変えて上書き保存しても
A列が左端、E列が右端に戻っていますのです。
いろいろと検索すると、同じように悩まれた方はマイクロソフトコミュニティにの中の「データシートビューの列順が反映されない 」を参考にして解決したか、タブオーダーの再調整や新規に作り直して解決できたかのようでした。
しかし、私の場合はそれらでは解決できず、
今回は、既存システムの改修なので、できるだけ手を入れたくないなぁを考えながら四苦八苦した結果、(SOHOエンジニア、在宅エンジニアの方には笑われてしまうかもしれませんが、)
正解は、プロパティシートの中の「レイアウトビューの許可:はい」です。
どうやら「レイアウトビューの許可:いいえ」の状態で列順を変えようとしても変えられなかったようです。
もしかしたら、同じ解決方法を既に公開されている方がいらしたかもしれませんが、「access2013 vba フォーム データシートビュー 列順」での検索結果からは見つかりませんでしたね。
では、なぜ答えを見つけられたかというと・・・それは新規フォームと当該フォームで、プロパティシートの設定内容を見比べたからです。幸い、上から8個目の項目だったので f(^^;
お粗末様でした。
--28年6月27日 追記--
上記の方法でもうまくいかない時があり再試行したところ、1つ見つけました。
① データシートビューの状態で列順や列幅を変える
② 左隅をクリックして全体を選択する
③ 何か変更する(例えば、フォントサイズなど)
④ 上書き保存する
⑤ フォームを閉じる
それで再度表示すると①の変更が効いていると思います。
お試しください。
--29年3月7日 追記--
さらに上記の方法でもうまくいかない時、もう1つ方法を見つけました。これが一番簡単かも!?
① データシートビューの状態で列順や列幅を変える
② 変更した列を非表示にして上書き保存する
③ ②で非常時にした列を再表示して、もう1度上書き保存する
④ フォームを閉じる
次に開いたとき、思惑とおりになっていると思います。