Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
パフォーマンスの最適化で表示されるメッセージ(2回目)
投稿日時: 21/04/02 09:33:54
投稿者: かず

21/03/23 10:36:40に投稿させて頂いた
パフォーマンスの最適化を実行すると
『このプロパティの設定値が長すぎます。』とポップアップ表示される件で
少し進展があったので報告だけさせて下さい。
 
フォーム上にある入力用のテキストボックスを1つずつ削除して
パフォーマンスの最適化を実行してみたところ
テキストボックスを2個削除したところでポップアップ表示がされなくなりました。
 
特定のテキストボックスという事ではなく、とにかく2個テキストボックスを削除すると
ポップアップ表示がされなくなるのです。
そしてフォーム上に新規でテキストボックスを作るとポップアップ表示されます。
 
もしかしたら原因は、
フォームの中にサブフォームあります。
そのフォームの上には、ボタン、コンボボックス、テキストボックスが多すぎるからかも知れません。

回答
投稿日時: 21/04/02 14:03:48
投稿者: sk

引用:
21/03/23 10:36:40に投稿させて頂いた
パフォーマンスの最適化を実行すると
『このプロパティの設定値が長すぎます。』とポップアップ表示される件

https://www.moug.net/faq/viewtopic.php?t=80384
 
引用:
やった事の手順は
  
データベースツール
→パフォーマンスの最適化
フォームタブ
全て選択
→OK押して実行

今回もこの通りの手順で実行されたのでしょうか。
 
引用:
フォーム上にある入力用のテキストボックスを1つずつ削除して
パフォーマンスの最適化を実行してみたところ
テキストボックスを2個削除したところでポップアップ表示がされなくなりました。
  
特定のテキストボックスという事ではなく、とにかく2個テキストボックスを削除すると
ポップアップ表示がされなくなるのです。
そしてフォーム上に新規でテキストボックスを作るとポップアップ表示されます

仮に全てのフォームを対象に解析処理を実行されたとして、
解析対象のフォームを減らしてみる(例えば 1 つだけにする)と
どうなるのでしょうか。

投稿日時: 21/04/02 16:01:16
投稿者: かず

skさんいつもおせわになっております。
 
まず手順のパタンとして3パタンやっています。
●パタン1
データベースツール
→パフォーマンスの最適化
→フォームタブ
→全て選択
→OK押して実行
 
●パタン2
データベースツール
→パフォーマンスの最適化
→すべてのオブジェクト
→全て選択
→OK押して実行
 
●パタン3
データベースツール
→パフォーマンスの最適化
→フォーム
→該当のフォームのみレ
→OK押して実行
 
このパタン1〜3全てでポップアップ表示無く処理されます。
 
しかしフォーム上に新規でテキストボックスを作るとポップアップ表示されます
これは何回でも同じく再現できます。
 
今週は少し時間に余裕があります。
まだ原因がわかっていないですから
何か試してみたい事がありましたら申し付けて下さい。
できる事はなんでもやってみたいです。
 

回答
投稿日時: 21/04/03 08:51:21
投稿者: Suzu

確認なのですが「ポップアップ」と表現されているのは
 
パフォーマンス最適化ツールを使用して Access データベースを最適化する
https://support.microsoft.com/ja-jp/office/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E6%9C%80%E9%81%A9%E5%8C%96%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6-access-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%99%E3%82%8B-c44619df-4248-421f-9b8b-30b86082d792
 
にある様に、「パフォーマンス最適化ツール」のタイトルの表示ですよね?
 
 
前回のスレッドでは

引用:
すると『このプロパティの設定値が長すぎます。』とポップアップ表示されます。
それと同時に、該当のSQL文が小さなポップアップで少しだけ表示されています。
  
表示された内容から、対象のフォームとクエリを使っているコンボボックスを特定できましたので、

との事でした。
今回は、コンボボックスではなく、テキストボックスなのでしょうか?
 
 
テキストボックスなのであれば、
 ・どの様な内容の記載があり
 ・最適化 を行うとどうなるのでしょうか?

投稿日時: 21/04/03 11:36:33
投稿者: かず

操作は、間違いなく「パフォーマンス最適化ツール」です
まさに貼って頂いたURL先の画像のものです。
 
前回はポップアップ表示されていたSQLを見て
このコンボボックス周辺が原因だ!と特定したつもりでいたのですが
 
今回、フォーム上から削除したのは、
これだと思ったコンボボックスや他のコンボボックスでは無く
単に同じフォームの上にあるテキストボックスです。
※実行時にvbaで参照している箇所はコメントにしてます。
 
このテキストボックスは入力用のもので入力チェックすらしておらず
これといった設定は何もありません。
 
昨日わかった事は
特定のテキストボックスを2つ削除すればエラー表示のポップアップが出なくなるという事ではなくて
フォーム上のテキストボックスをどれでもいいから2つ削除すればエラー表示のポップアップが出なくなります。
 
そして今日わかった事は
エラー表示のポップアップが出ていたコンボボックスはそのままで
適当に他のコンボボックスを2個削除してみたらポップアップが出なくなりました。
 
実害としては何も出ていないので問題にはなっていないのですが
もう少しいろいろとやってみます。
 
今度は、officeのバージョンを1年くらい前のモノにしてやってみようと思います。
もしかしたら何か違う結果がでるかも知れません。

回答
投稿日時: 21/04/03 15:01:44
投稿者: Suzu

前回の内容とは別と考えたほうが良いのですね。
 
非連結の新規フォームに 非連結テキストボックスを 700個配置しテストを行いました。
 
出てきたのは
アイディア
 'フォーム名'フォーム:コントロールを減らします。
だけでした。
 
 
そのメッセージが出てくる 対象オブジェクトが 「'フォーム名'」の様に先頭に出ませんか?
「長い」と言うのであれば、そのコントロールのプロパティーを確認しましょう。
 
それとも、フォームに対し、「長い」と言われるのでしょうか?
メッセージの対象を明確にしてください。
 
その上で、データベース構造の解析を行い対象オブジェクトのプロパティーを確認
或いは、VBAを使用し、各プロパティーの値を確認
 
 
いっそのこと、全オブジェクトを、新規ファイルにインポートしてみる
 
くらいしか思いつきません。

回答
投稿日時: 21/04/03 15:06:14
投稿者: Suzu

念のためお聞きしておきますが、
 
最適化ツールの画面で
当該を選択し「最適化」を押しても 改善処理はなされないですよね?

投稿日時: 21/04/03 16:49:33
投稿者: かず

Suzuさん
お忙しい中ありがとうございます
 
今日やってみた事を簡単にまとめてみました。
 
======================================
1.データベースの最適化実行
======================================
最適化をしても改善される事はありませんでした。
 
======================================
2.ポップアップ表示は同時に2つ出てきます。
======================================
メッセージの出かたなのですが
2つのポップアップが同時にでます。
 
1つは
タイトル文字列には、「パフォーマンス最適化ツール」と表示され
メッセージ文字列には、「プロパティの設定値が長すぎます。」と表示されます
最下部には「OK」ボタン。
 
もう1つは、タイトル文字列には、「パフォーマンス最適化ツール」と表示され
メッセージ文字列には、小さい窓にSQLが3行で横40文字程度見えるだけで
最下部には「OK」ボタンは無し。
 
「OK」ボタン付きのポップアップの「OK」を押せば
2つのポップアップが閉じて、停止していた処理が再開されます。
 
 
最後に表示される解析結果では
'フォーム名'フォーム:コントロールを減らします。
だけです。
 
======================================
3.空のデータベースに移して実行にしてみました
======================================
新規で空のデータベースを作って
データやフォームなど全てインポートしてデータベースの最適化実行
それからパフォーマンスの最適化実行。
結果は変わらず、エラー表示のポップアップがでました。
 
 
======================================
4.バージョンを古いものにしてみました
======================================
officeのバージョンを1年程前の古いものにしてみました。
 
【現行最新】バージョン 2103 (ビルド 13901.20336)
         ↓
【1年前の古いバージョン】バージョン 2003 (ビルド 12624.20466)
 
結果は変わらずでした。
 
 
この辺で一度CLOSEしようと思います。
どのくらい先になるかわかりませんが
解決方法がわかったら書き込みさせて下さい。

回答
投稿日時: 21/04/04 09:39:12
投稿者: Suzu

引用:
「OK」ボタン付きのポップアップの「OK」を押せば
2つのポップアップが閉じて、停止していた処理が再開されます。
  
  
最後に表示される解析結果では
'フォーム名'フォーム:コントロールを減らします。
だけです。

 
「パフォーマンスの最適化」の最中に、モーダルダイアログとして表示されるのですね。
 
でも、最終結果の画面には、
'フォーム名'フォーム:コントロールを減らします。
のみ。
 
 
パフォーマンスの最適化 処理にて
あるコントロールのプロパティー解析中に 解析できる範囲を超えるプロパティーがあり、
それをユーザーに知らせるために処理を中断させダイアログとウィンドが表示された。
 
しかし、最終結果画面には、その内容は表示されていない。
 
という事ですね。
 
 
状況が再現できないので、確実な事は何もいえないのですが、
テキストボックス のプロパティーとして、直接SQL が指定される事象に思い当たる事がありません。
 (自作関数を使ってなら、規定値や入力規則 で使用できますが、
  解析でそこまで解析しているのか判りません)
 
SQLの表示の内容と、テキストボックス数 に直接的な関係がない可能性があると思っています
 (コントロールの数が多い事で
  プロパティーが長い と勘違いし、表示が出る??
      コントロールのプロパティー、なにかしら別のコントロールを含めた類型的な精査を行っている??
  問題点1 が存在する事で、別の問題点2 が表示されてしまう状態が発生しているでは?)
 
 
何にしろ、SQL という手がかりがあるので、
データベース構造の解析 / システムテーブル MSysObjects・MSysQueries / VBA で各プロパティー走査
等を使用し、そのSQLを探し
・そのプロパティーの見直し(クエリに変更)
・当該コントロールの削除
を行い、パフォーマンスの最適化 の表示の変化の確認を行うくらいしか思いつきません。
 
 
それ以降であれば、ユーザーにとっては、判断のしようがない事でもありますので、
気になるのであれば正式サポートに聞いてみるくらいしかないと思います。
 
 
もっとも、SQLのダイアログ 云々ではなく、
コントロールを少なくしては といわれていますので、
サブフォーム内のサブフォーム や、別ウィンド 等を検討してはどうでしょうか。
 
コントロール数を減らす事で、SQLの表示もなくなるのは確認済みなのですから。

投稿日時: 21/04/04 11:42:48
投稿者: かず

Suzuさんお休み中だというのに何度もすいません。
 
通常の処理には何ら問題はありませんので
このまま使い続けますが、
やはり気にるので時間の合間を見て思い当たる事をやってみようかと思います。
 
サポートの方にも問い合わせてみようと思います。
 
お忙し中ありがとうございました。