1

MS Access 2003 を使用して、SQL Server 2005 Standard バックエンドにリンクする MS Access 2000 .mdb を開いています (MSSQL とローカルの Jet テーブルの両方を使用して問題をテストし、再現しました。この質問に SQL Server のタグを付けます)。

サブフォーム内のすべてのレコードに対して 11 のレコードを持つサブデータシートがあります。サブフォームのレコード数が少ない場合 (7 ~ 10 レコード)、サブデータシートの小さな [+] は期待どおりに動作します。

ただし、サブフォームのレコード数が 40 ~ 48 レコード程度になると、動作が変わります。小さなプラス記号/拡張アイコンをクリックすると、Access によって必要に応じて領域が拡張されますが、完全に白/空白で、データが表示されません。まずサブフォーム レコードをクリックし、サブデータシートにデータが表示される前に展開アイコンをクリックする必要があります。この状況下では他にも奇妙な動作がありますが、サブフォーム レコードにサブデータシートのデータを表示させるための唯一の一貫した信頼できる方法です。

次のスクリーンショットは、先ほど説明したトリックと空白のデータのシナリオを使用して展開が成功したことを示しています。

サブフォームとサブデータシートのスクリーンショット

Google 検索は役に立たないことが判明しました。以下は私が見つけた最高のものです。

また、大きなテーブルにサブデータシートを追加すると、テーブルのパフォーマンスに悪影響を及ぼす可能性があることにも注意してください。-- MS Office の記事、サブデータシートを追加

40 ~ 48 レコードが「大きい」と見なされるとは思いませんし、「パフォーマンス」が「奇妙な動作」と同義であるとは思いません。

私が試したこと:

  • サブデータシートのソース クエリを読み取り専用にします。
  • SubDatasheetName を [Auto] から明示的に宣言されたソース クエリに変更します。
  • サブデータシートのソース クエリのレコード数を制限して、各サブフォームのレコードにサブデータシートの行が 2 ~ 4 行だけ含まれるようにします。
4

1 に答える 1

0

適切な回避策を見つけたと思います。

パッティング:

Me.Refresh
DoEvents

メインフォームのOnCurrent場合、ほとんどの状況でうまくいくようです。時々癖がありますが、データシート(サブデータシートではない)の何かを変更するだけで、Accessがすべてのデータをロードし、期待どおりに表示および動作するように見えます。

追加の修正/回避策は高く評価され、歓迎され、適切に投票されます。

于 2012-12-10T19:41:03.327 に答える