2

Access 2002 で問題が発生しています...

2 つのテーブルがあります。1 つは約 60k のオカレンスを含み、もう 1 つは列と結合を行うための外部キーを含みます。私のフォームでは、これら 2 つのテーブルを結合したクエリにソースを設定しました (空のテーブルで左結合)。基本的に、60,000 件のオカレンスと新しいコラムが最後に表示されます。

ここで、ユーザーがフォームでこのフィールドを編集できるようにする必要があります。空のテーブルに対応するデータが存在する場合は、フィールドを問題なく編集できることがわかりましたが、この空のテーブルには、新しい列を追加する必要がある箇所のみを含める必要があるため、単純に作成することはできません。私のすべての出来事の新しいエントリ。

2 つのテーブルのスキーマを次に示します。

表1:

ID    Sequence    Col1    Col2    Col3    Col5
60k

表 2:

ID    Sequence    Col6
0

そして私の質問:

SELECT tblOne.*, tblTwo.Col6
FROM tblOne 
LEFT JOIN tblTwo ON (tblOne.Sequence=tblTwo.Sequence) AND (tblOne.ID=tblTwo.ID); 
4

2 に答える 2

1

更新できないクエリがある場合は、何が原因であるかについて、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

于 2013-09-19T22:20:42.687 に答える