更新できないクエリがある場合は、何が原因であるかについて、Allen Browne のヒントを確認してください: http://allenbrowne.com/ser-61.html
MS Access には欠点があります。リストのようなビューでデータを編集する場合は、通常、テーブルに保存されているのと基本的に同じ構造で表示するのが最適です。編集:これが Access の欠点ではないことについて Yawar が残したコメントを参照して、.NET で開発する場合、使用されるデータ モデル クラスとはまったく異なるデータベース構造を持つことは珍しくありません。アプリケーション内。この場合、GUI はデータ モデルに基づいて構築されているため、データベースはデータ モデル/GUI と多少 (またはまったく) 異なるように見える場合があります。
MS Access に戻りますが、テーブル結合を使用してデータシート フォームまたは連続フォームのレコードソース/レコードセットを作成する場合、テーブルの 1 つだけが更新可能になると理解しています。つまり、結合の片側のみが更新可能です。また、多くの場合、DAO エンジンが混乱しているため、レコードセットはまったく更新できません。更新:以下のリンクから、私が上に書いたことは、JET/ACE バックエンドを使用するよりも SQL Server に当てはまるように思われると推測しました。
最も一般的な解決策は、HansUp が提案したように、フォーム/サブフォーム アプローチを使用することです。実際には、データシート サブフォームを別のデータシート サブフォームの子として持つことができます。これは、ここでのケースでは非常にうまく機能します。各レコードの左端に展開可能なプラス記号があるだけなので、tblTwo でレコードを追加/編集/削除できます。
もう 1 つのオプションは、10tec の iGrid などの ActiveX グリッド コントロールを使用することです。これは、レコードセットの読み込み、データベースへの変更/追加/削除の書き込み、書式設定の処理など、あらゆる種類のコードを大量に記述することを意味します。細胞などの
さらに別のオプションは、作成された ADO レコードセットを使用することです。これはひどく不器用なアプローチであり、実際に使用されているのを見たとは言えません。ほとんどの場合、実験して理論を読んだだけです。問題は、生成したレコードセットとほぼ同一の複製されたレコードセットを作成する必要があることです。次に、生成されたレコードセットのすべてのレコードをループして、複製したレコードセットにコピーする必要があります。特に多くのレコードの場合、これは途方もない量のオーバーヘッドです。そして、すべての追加/変更/削除をデータベースに書き戻すコードをもう一度作成する必要があります。新しい主キーの作成を処理するのは難しい場合があります。この特定のアプローチは簡単でも単純でもないため、VBA の初心者に取り組むことをお勧めしません。
SQL Server を使用している場合は、Microsoft の Web サイトで次の記事を確認してください。単一のレコードソース/ビューから複数のテーブルを更新するなど、さまざまな資料をカバーしています。http://technet.microsoft.com/en-us/library/bb188204%28v=sql.90%29.aspx