1

Access 2010 Web データベースを設計しており、結合されたテーブルに基づいてデータを表示するサブフォームを作成しようとしています。正常に表示されますが、データを変更できません。2 つのテーブルは、Consortiums および PrincipleInvestigators と呼ばれます。それらの間には多対多のリンクがあるため、ConsortiumsPrincipleInvestigators 結合テーブルがあります。

特定のコンソーシアムに関連するデータを表示する「コンソーシアム」フォームがあり、そのフォーム内にそのコンソーシアムの主な研究者の一部を表示するサブフォームがあります。すべての PI を正常に取得できましたが、そのサブフォーム内に主任研究員を追加しようとすると、次のエラーが表示されます。これは、PrincipleInvestigators テーブルと結合テーブルの両方を更新する必要があるためだと思います (また、MS さん、このばかげたルックアップ フィールド ビジネスの代わりに、標準のリレーショナル データベースを使用できないのはなぜですか?)。私の結合テーブル:

http://i.imgur.com/j4RJQ.png

ブレ。かなりの量のデータベース プロジェクトを行ってきましたが、私は野心的だと感じていますが、ルックアップ フィールドとクエリ ビルダーが私をうんざりさせています。クエリの設計方法に関する優れたチュートリアルを知っている人はいますか?

4

2 に答える 2

2

2 つのテーブル間のリレーションシップを構築するという点では、何も変更はありません。GUI、SQL DLL コマンド、または何らかのリレーションシップ ウィザードを使用しても、何も変わりません。

2 つのテーブル間の関係を設定するプロセスがどのようなものか、誰が気にするでしょうか?

つまり、クライアントベースでは、次のように入力できます。

ALTER TABLE Cars
   ADD CONSTRAINT MyColorIDRelationship
   FOREIGN KEY (ColorID) REFERENCES Colors (ColorID)

では、マウスを数回クリックするだけのウィザードを使用していますが、これは大したことではありませんか? 本当に、誰が気にします!ここで大したことはありません。私たちが気にするのは、ここでコマンド、ウィザード、または何かを実行することだけです。1 日の終わりには、2 つのテーブル間の最愛の関係が得られます。

私の次のビデオをチェックしてください。既存の関連データを Web データベースに「接続」しています。また、Web データベースの Access リレーションシップ ウィンドウを使用して、関連するテーブルを印刷する方法も共有します。

http://www.youtube.com/playlist?list=PL27E956A1537FE1C5&feature=plcp

したがって、一日の終わりに、DDL sql コマンド、GUI 関係ウィンドウ、またはウィザードを使用する必要があるという詳細に悩まされる必要はありません。上のビデオが示すように、あなたがしているのは、いくつかのテーブルを接続してリレーションをセットアップすることだけです。

親レコードに関連する子レコードを追加する方法は? 過去 18 年間、Access を使用するほとんどすべての鳥、犬、カブトムシは、次のように単純に実行していました。

a) 1 つのメインの親レコード テーブルに基づいてメイン フォームを作成します。ここでクエリを作成する必要はありません。実際、2 つのテーブルを結合するクエリを作成する必要はありません。これは決して必要ではなく、必要でもありません。1 つの単純なテーブルに基づいてフォームを作成するだけです。この部分「a」は完了です。

b) ONE 子テーブルに基づいてフォームを作成します。ここでクエリを作成する必要はありません。実際、2 つのテーブルを結合するクエリを作成する必要はありません。これは決して必要ではなく、必要でもありません。1 つの単純なテーブルに基づいてフォームを作成するだけです。

c) 最初のフォーム (親レコード テーブルに基づくフォーム) を開き、レイアウト モードで、ナビ ペインから子フォームをドラッグ アンド ドロップします。

上記の a、b、c の手順は、私が見た Access での実質的にすべての親から子へのセットアップの方法であり、この長い時間の永遠のセットアップは、Web ベースのアプリケーションで 100% 動作し続けます。

どちらの場合でも (Web または非 Web)、セットアップは同じままで、セットアップにはクワイアの作成は含まれず、セットアップではコーディングは必要ありません。

リンク/マスターの子設定がサブ フォーム コントロールで正しい限り、子レコードを子フォームに自由に追加できます。Access は、セットアップの残りの面倒な作業を行い、設定によって関係を維持します。その子フォームの FK 列。

したがって、ここでの基本的なセットアップのしくみは、Access を使用して 18 年間変わっていません。したがって、ここで Web フォームを作成するときも、これは変わりません。

複数のテーブルに基づくクエリは必要ありません。実際、過去と同じように、2 つのフォームは原則として 1 つのテーブルのみに基づくデータ ソースを持ちます。

そのため、ほとんどの場合、フォームの基になる 1 つのテーブルに対してクエリを使用する必要さえありませんでした。この長年にわたる基本的なアプローチとセットアップは、Web フォームでも変更されていません。

あなたの場合、メインのフォームはコンソーシアムだと思います。あなたの子フォームは、Principleinvegiartors に基づく継続フォームである可能性があります。また、一部の PrincipleInvetigaor ID を手動で入力する代わりに、テーブル PrincipleInvetgioars に基づくコンボ ボックスを使用します。ただし、いずれの場合も、1 つのベース テーブルに基づいてフォームを作成しているだけです。

于 2012-08-22T20:34:08.303 に答える
0

この状況では、メイン フォーム用のテーブルとサブフォーム用のジャンクション テーブルの 1 つを選択する必要があります。

例えば:

Main Table
Consortiums 

Subform
ConsortiumsPrincipleInvestigators 

Link Child and Master Fields ConsortiumID

ComboBox on subform
Principal investors
Row source: SELECT InvestorID, InvestorDetails FROM PrincipalInvestors
Control Source: InvestorID
Bound Column: 1
Column Count: 2
Column Widths: 0,2

Not In List に関する注意事項

        DoCmd.OpenForm "AddSomething", , , , , acDialog, AddData

        If Forms!AddSomething.Tag <> "" Then
            frm(cbo).Undo
            frm(cbo).Requery
            frm(cbo) = Forms!AddSomething.Tag

            AddCombo = acDataErrAdded
        Else
            AddCombo = acDataErrContinue
        End If

        DoCmd.Close acForm, "AddSomething"
于 2012-08-21T20:52:58.570 に答える