質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

8591閲覧

【原因不明】突然ポップアップフォームが表示されなくなりました(一応自己解決)

DreamTheater

総合スコア1095

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2020/09/02 00:09

編集2020/09/02 00:11

###環境
Windows10 Pro Ver.1903
Office365 Ver.2002 (12527.20988)

###発生事象
8/31(月)ACCESSで作成した一部フォーム(10フォーム)が突然表示されなくなりました。
8/28(金)まで約1年間特に問題なく表示されていたフォームです。

  • フォームは全てポップアップ「はい」で作成。(全21フォーム)
  • デザイン/レイアウトビューは正常に表示される。

以前ACCESS 2010を利用していた頃、同じ現象が発生したことがあり、
その時は以下操作で解消しましたが、今回は解消しませんでした。
0. 表示されなくなったフォームのポップアップを「いいえ」で一旦保存。
0. 再度、同フォームのポップアップを「はい」で再保存。

データベースの最適化/修復を行っても解消しませんでした。

###自己解決した対処方法
表示されなくなったフォーム全ての「開く時」イベントプロシジャーを作成し、
Me.Refreshを記述したところ、元通り表示されるようになりました。

VBA

1Private Sub Form_Open(Cancel As Integer) 2 Me.Refresh 3End Sub

###質問事項
フォーム構成情報が何らかの原因で破損(?)したのでしょうか?
また、今回自己解決した対処方法以外の対処方法をご存じでしたらご教示頂きたく。

本件はMicrosoftコミュニティにも報告しましたが、今のところ原因・対処方法について
書き込みはありません。
ACCESS 突然フォーム(ポップアップ)が表示されなくなりました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/02 00:35

メモリの増減とか確認してみては?
DreamTheater

2020/09/02 00:47

m.ts10806さん、コメントありがとうございます。 メモリ使用率は60%前後で推移しており、ACCESS起動時2%程度上昇した程度です。 自己解決後のACCESS起動時も同程度でした。 ※実装メモリ8GB
m.ts10806

2020/09/02 00:58

なるほど。クローズしないことでサーバーに溜まりっぱなしになって負荷がかかって落ちるというのはある話なので、そこを疑ったのですがそうでもない感じですかね。リフレッシュで解放されたのかなという所感でした。 あ、すみません。追加したリフレッシュの記述は削除して確認してますよね?
DreamTheater

2020/09/02 01:21

m.ts10806さん 特に害はないと思いリフレッシュはそのままだったのですが、今Form_Openそのものを削除してみましたが、問題なく表示されますね。
tosi

2020/09/02 02:26

Accessは壊れます。フロント部分は特に壊れます。 データベース部分とフロント部分を分けて、壊れたらBackアップから戻せる工夫が必要と思います。 データベース部分は文字通りテーブルのみで、この状態で壊れた経験はありません。 (最適化/修復での復帰は何回かあったかな・・・・。尚、リレーションシップ機能使った経験なし。) フロント部分はちょくちょく壊れます。(Access2000の開発時には必ず動かなくなる事態発生。悲惨です) データ無いのでBackupからコピーで即復旧する筈です。 可能であれば運用前に1日1回ファイル上書きでの運用が出来れば安定稼働出来ると思います。 Office365は安定性もアップしていると予想しますので、そこまで気を付ける必要は無いかもしれませんが・・・
DreamTheater

2020/09/02 02:37

tosiさんコメントありがとうございます。 SVNで世代管理しているので、後戻り覚悟なら世代を戻したのですが、悪あがきの結果自己解決に至った次第です。^ ^; もしかしたら、フォームのクラスモジュールを空更新するだけで復旧したのかもしれません。 →次回発生待ちですが、、、
sousuke

2020/09/02 02:45

ポップアップフォームはデータソースがありますか? あるとしたらレコードロックのプロパティはありますかね? あとは現象出た時にacDialogで開くとどうなるか、くらいですかね…
DreamTheater

2020/09/02 04:13

sousukeさん、コメントありがとうございます。 データソース(レコードソース?)ありのフォームもありますが、それらは正常に表示されます。 レコードロックプロパティは「しない」です。 acDialogで開くは試してないので、次回再現したときですね。 再現して欲しくないのが本音です。^ ^;
guest

回答1

0

ベストアンサー

Refreshで改善されたのなら、イベントの発生順序が変わってしまったものと推測されます。
イベントの発生はOS任せなので、他のアプリケーションだったり、アップデートでも影響を受ける可能性があります。

イベントを消化させるのに、DoEventsが有効な場合もありますが、イベント順序が変わり既存の処理が影響を受ける場合もあります。

AccessではDoCmd系のメソッドは非同期であり、クエリーの実行などは、同期処理であるExecuteの使用をお薦めします。

投稿2020/09/02 02:55

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DreamTheater

2020/09/02 04:17

ありがとうございます。 Me.Refreshの代わりにDoEvents記述でも解消したのかもしれませんね。 イベント発生順序が予告なく変わるとなると、ユーザ向けにリリースしているACCESSのシステムで突然発生する可能性も視野に入れておくことにします。 質問へのコメントを含め有益な情報を得ることができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問