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 行だけ含まれるようにします。