Access (一般機能)

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

 
(Windows 7 Home Premium : Access 2013)
フィルター実行時の画面のちらつきをなくしたい
投稿日時: 18/05/29 14:20:13
投稿者: saitooffice

メインフォームに、検索用の非連結サブフォームを置いています。
このサブフォームに表示されているレコードのテキストボックスを
クリックすると、メインフォームにレコードの内容が表示される
仕組みを作りました。
 
テキストボックス[txtコード]のクリックイベントに、
埋め込みマクロ → フィルターの実行 → Where条件 に
[コード]=[Forms]![メインフォーム]![サブフォーム].[Form]![txtコード]
と入力しています。
 
上記で思い描く動作はできたのですが、メインフォームに表示される
とき、画面のちらつきが激しいです。
(メインフォームにはテキストボックスが8つ、条件付書式の設定はなし)
 
このちらつきを最小限にしたいのですが、どうすれば良いでしょうか。
よろしくお願いいたします。

回答
投稿日時: 18/05/29 15:03:12
投稿者: sk

引用:
メインフォームに、検索用の非連結サブフォームを置いています。
このサブフォームに表示されているレコードのテキストボックスを
クリックすると、メインフォームにレコードの内容が表示される
仕組みを作りました。

そのサブフォームは非連結フォームではなく
連結フォームなのでは。
  
引用:
テキストボックス[txtコード]のクリックイベントに、
埋め込みマクロ → フィルターの実行 → Where条件 に
[コード]=[Forms]![メインフォーム]![サブフォーム].[Form]![txtコード]
と入力しています。

サブフォーム上のテキストボックス[txtコード]の
[クリック時]イベントの埋め込みマクロにおいて
実行されるアクションはそれだけなのでしょうか。
 
引用:
上記で思い描く動作はできたのですが、メインフォームに表示される
とき、画面のちらつきが激しいです。
(メインフォームにはテキストボックスが8つ、条件付書式の設定はなし)

メインフォーム/サブフォーム上に
演算コントロールは存在しないのでしょうか。
 
また、メインフォーム上のサブフォームコントロールの
[リンク親フィールド]プロパティや[リンク子フィールド]プロパティには
何のフィールド名も設定されていない(メインフォームのカレントレコードと
サブフォームのレコードがリンクしていない)のでしょうか。

投稿日時: 18/05/29 15:19:38
投稿者: saitooffice

skさん
お返事ありがとうございました。
 

引用:
そのサブフォームは非連結フォームではなく
連結フォームなのでは。

 メインフォームと連結していない(連動していない)
 ので、非連結フォームと思っていました。
 連結か、非連結か、どこを見れば確認できるでしょうか?
引用:
サブフォーム上のテキストボックス[txtコード]の
[クリック時]イベントの埋め込みマクロにおいて
実行されるアクションはそれだけなのでしょうか。

はい。それだけです。
引用:
メインフォーム/サブフォーム上に
演算コントロールは存在しないのでしょうか。

はい。メインフォーム、サブフォーム共に存在していません。
 
引用:
また、メインフォーム上のサブフォームコントロールの
[リンク親フィールド]プロパティや[リンク子フィールド]プロパティには
何のフィールド名も設定されていない(メインフォームのカレントレコードと
サブフォームのレコードがリンクしていない)のでしょうか。

はい。
[リンク親フィールド]、[リンク子フィールド]ともに空欄です。
 
つたない説明で申し訳ありません。
どうぞよろしくお願いいたします。

回答
投稿日時: 18/05/29 16:02:09
投稿者: sk

引用:
メインフォームと連結していない(連動していない)
ので、非連結フォームと思っていました。

引用:
[リンク親フィールド]、[リンク子フィールド]ともに空欄です。

Access における「連結フォーム」とは
「何らかのテーブル/クエリ(レコードセット)と連結しているフォーム」、
「非連結フォーム」とは「どのテーブル/クエリ(レコードセット)とも
連結していないフォーム」のことを指します。
 
引用:
連結か、非連結か、どこを見れば確認できるでしょうか?

大抵の場合は、そのフォームの[レコードソース]プロパティに
任意のテーブル名、クエリ名、または SQL ステートメントが
設定されているかどうかで分かります。
( VBA を用いて任意のレコードセットとフォームを連結させる
 方法もあるが、恐らく今回の件とは関係がないはず)
 
とりあえず、メインフォーム上のサブフォームコントロールの
ソースオブジェクトとして指定されているフォーム(=サブフォーム)の
[レコードソース]プロパティの設定値をご確認下さい。
 
引用:
テキストボックス[txtコード]のクリックイベントに、
埋め込みマクロ → フィルターの実行 → Where条件 に
[コード]=[Forms]![メインフォーム]![サブフォーム].[Form]![txtコード]
と入力しています。

引用:
はい。それだけです。

では、[フィルターの実行]アクションの前後に
[エコー]アクションを 1 つずつ挿入し、
[フィルターの実行]アクションの前に実行される方の
[エコーの設定]オプションを「いいえ」に、
[フィルターの実行]アクションの後に実行される方の
[エコーの設定]オプションを「はい」に設定してみて下さい。

投稿日時: 18/05/29 16:46:33
投稿者: saitooffice

引用:
[フィルターの実行]アクションの前に実行される方の
[エコーの設定]オプションを「いいえ」に、
[フィルターの実行]アクションの後に実行される方の
[エコーの設定]オプションを「はい」に設定してみて下さい

skさん
エコーの設定をやってみたら、画面のちらつきがだいぶ減少されました。
今後は教えて頂いた方法でやろうと思います。
助かりました。ありがとうございました。