お世話になります😀
1ヶ月くらい開いてなかったAccdbファイルを開き、その中のフォームを使用しようとしたところ(しようしよう煩いですね🤨)、開いても真っ白のフォームしか開きません😱😱😱
誤ってオブジェクトのプロパティの可視を「いいえ」にしてしまったのだと思いデザインビューで確認を行いましたが、「はい」になっていました🧐
デザインビューには配置したオブジェクトが表示されていましたので、フォームビューでだけ表示されないようです…😥
全てのフォームが真っ白になってしまったわけではなく、問題なく表示されるフォームもあります👍
真っ白になってしまったのは、コンボボックスで選んだ担当者で抽出を行い、その担当者だけのレコードを印刷プレビュー表示するフォーム、もうひとつは、文字数が多いレコードを抽出し、別のフィールドに文字を振り分けを行うフォームです😊
普通に表示されるのは、TrimとかStrConvとかのクエリをまとめて実行するボタンがひとつだけあるフォームです😴
一体何が原因なのでしょうか❓
久しぶりにフォームを開いた後に行った操作は、レコードを全て削除し、新たにレコードを追加したくらいです😏
原因と解決方法を知りたいです、何を試してもだめで困っています😭😭😭
フォームのプロパティで読み込み時にフィルターを適用プロパティが「はい」になってるとかかな?
hiroton様
そちらのプロパティを確認しましたが、「いいえ」になっておりました😖😖😖
ナビゲーションウインドウから直接フォームを開いても同じ症状ですか?
フォームにはVBAのコードが組み込まれていますか?
その場合、一度すべてのコードを削除して開いてみるとどうですか?(フォームそのものをコピーして試すと安全です)
毎回ナビゲーションウィンドウからフォームを開いています。
担当者別にレポートを表示するフォームには、担当者を選択するコンボボックスと、レポートを表示するボタン、それからレポートを閉じるボタンがあり、それぞれのボタンにはVBAのコードがありますが、フォームが開けない原因としては考えにくいと思います。
レコードの文字を別フィールドに振り分けるフォームには、振り分けが終わった後に更新するためのRequeryボタンがあり、そちらにVBAのコードが記述されています。
削除してみましたが、結果は変わらずでした。
フォームのレコードソースのクエリをナビゲーションウインドウから直接開いた場合、レコードは表示されますか。
また、そのクエリでデータの入力や更新はできますか。
担当者別に表示するフォームの方は、レコードソースに誤りがあったので、正しいレコードソースに変更したところフォームを開くときちんとオブジェクトが表示されるようになりました。
文字数を調整するフォームの方ですが、レコードソースのクエリにレコードはありませんでした。
抽出条件で設定している文字数を超えるレコードがなかったためだと思います。
どちらのフォームも「表示するデータがなかったから表示がなかった」ですかね?(hirotonの回答もそれを想定してのものですが)
ACCESSの基本仕様ではあるんですが、レコードが一切表示されない=ヘッダーに設置した抽出用の非連結のテキストボックスも使えなくなる等、副作用が厄介で、メイン-サブフォームにして抽出機能は親フォームで実装、サブフォームに明細表示だけを実装なんてことをよくやりますね
担当者別にレポートを表示するフォームのレコードソースが、なぜか文字数調整のフォームのレコードソースになっているクエリと同じだったので、本来レコードソースにしたかったテーブルに変更したところ表示されるようになりました。
文字数調整用のフォームはレコード数が0だったので表示されないままだったということみたいですね。
このような不具合を出さないようにするにはフォームの構成に一工夫いるということですね。勉強になります。
連結フォームで、レコードソースはテーブルか更新可能なクエリの場合、下記の設定・状況の場合、詳細セクションのコントロールが表示されず真っ白になります。
「追加の許可」プロパティが「いいえ」
レコード件数が0(表示するデータがない)
新規レコードは追加しないという仕様のフォームの場合でレコード件数が0の場合は、そもそも何もすることがないのでフォームを開くこと自体無意味になります。
フォームの「開くとき」イベントでレコード件数が0の時は適切なメッセージ(例えば「表示するレコードがありません」)を表示させて開くのキャンセルしてはどうでしょうか。そうすれば、真っ白なフォームが表示されてびっくりするということはなくなります。
コード例
新規レコードを追加するのを許可するフォーム(追加の許可=はい)ではこのような現象はおきません。