1

Accessでデータベースを作成しています。これは私の要件に似た単なるテスト データベースであるため、仕事用にデータベースを作成する前にスキルを磨くことができます。これは良い遊び場であり、豊富なデータであるため、架空の学校のデータベースを作成しました (多くの生徒には多くの科目があり、多くの教師がいるなど)。

質問 1 ルックアップ列と多対多関連テーブルの使用に違いがあるとすれば、それは何ですか? 例: テーブル 'Teacher' と 'Subject' があります。多くの教師は多くの科目を持っています。テーブル「Teacher_Subject」を作成し、これを使用してクエリを実行できます。次に、被験者からのデータを使用して、教師テーブルにルックアップ列を作成しました。ルックアップ列が teacher_subject テーブルの代わりになっているようです。(ただし、関係に関するデータはルックアップ テーブルと teacher_subject の間で明らかに重複しており、異なる場合があります)。どちらが「より良い」オプションですか? ルックアップ テーブルの使用に問題はありますか? (これは非常に「一般的な」質問であることを認識しています。他のリソースへのリンクと「それは...による」という回答を歓迎します)

質問 2 ルックアップ テーブルの魅力は次のとおりです。教師用の科目を入力するフォームを作成するとき、ルックアップを使用すると、チェックボックスを作成して、教師の科目を「オン」または「オフ」にするだけで済みます。オン/オフをクリックするたびに、ルックアップ列にレコードが作成/削除されます (これは teacher_subject を置き換えます)。教師のサブジェクトからのクエリからフォームを使用し、教師をメイン フォームとして、サブジェクトをサブフォームとして使用すると、この問題が発生します。サブフォームでは、教師がボンボ ボックスに持っている各サブジェクトを選択できます。 、次の行に移動、クリック、下にスクロールなど (時間がかかりすぎる) または、各行に使用可能なすべての件名をリストするリスト ボックスを作成し、1 つだけを選択できるようにすることもできます。(スペースを取りすぎます)。Teacher_subject のリスト ボックスをクリックしてオン/オフすることは可能ですか?

注 - SQL や VB についてはまったく知りません。正解が「これには SQL の知識が必要」である場合、それはすばらしいことです。私はただ知る必要があります。

ありがとう!

4

4 に答える 4

2

テーブルのルックアップ列は、喜びよりもストレスを引き起こします。Sharepoint で必要でない限り、避けるべきです。http://r937.com/relational.htmlおよびhttp://www.mvps.org/access/tencommandments.htmを参照してください

于 2010-05-07T16:45:21.633 に答える
1

私はそれらを使用しません。あなたの例は問題ありませんが、制限があります。名前以外のSubjectテーブルから別のフィールドを参照する必要がある場合はどうしますか?学期ごとにのみ提供される科目をどのように区別しますか?

醜いコーディングなしでは、各教師に割り当てられている科目の数を数える方法はありません。

もう1つの制限は、特定の学年度中に誰がどのコースを教えたかを特定し始めるときです。

于 2010-05-07T17:56:18.673 に答える
1

2 番目の質問についてはよくわかりませんが、ドロップダウン リストのあるサブフォームが必要なように思えます。

チェックボックスのことをしたい場合は、すぐにもっと複雑になります。私にとって、あなたはユーザー インターフェイスから始めて、逆方向に進むのではなく、逆方向に構造に取り組んでいると思います。

言及するのをためらっていますが、完全な開示という点では、A2007 と A2010 では複数値フィールドが利用可能であり、説明したとおりの UI が表示されることを知っておく必要があります。しかし、ルックアップ フィールドと同じ問題が多く、コードで操作するのは非常に複雑です。バックグラウンドでは、標準の多対多の結合テーブルを使用して実装されていますが、それはすべてユーザーから隠されています。

MSがすべてのリストボックスで利用可能なMVフィールドで使用されるチェックボックスコントロールを備えたリストボックスを作成することを望みますが、リストボックスコントロールがそのために設計されていない場合、それを多対多結合テーブルにバインドすることは複雑になります(リンクの子/リンク マスター プロパティなど)。

于 2010-05-07T19:04:09.673 に答える
0

複数値フィールドを実際に使用せずに、複数値フィールドから好みの UI 機能を提供する方法を考えてみました。それは私には難しいようです。

私が思いついた最も近い方法は、「リスト」の選択肢とチェックボックスフィールドを使用して、切断されたレコードセットをロードすることです。次に、データシート ビューに表示するレコードセットに基づいて、フォームまたはサブフォームを作成します。複数値フィールドにバインドされたコンボに似ている可能性があります。チェックボックス フィールドの after update イベントでは、必要に応じてジャンクション テーブルからレコードを追加または削除するコードが必要です。

ただし、これがあなたが取り組む気になるものであるかどうかはわかりません。前に、必要に応じて SQL を学習する意欲があることを示しました。私が提案しているアプローチには、VBA も必要です。Danny Lesandrini の記事Create In-Memory ADO Recordsetsを見て、それを使用できるかどうかを確認してください。

OTOH、おそらくあなたにとって最も適切な答えは、多値フィールドを維持して、残りの人生を続けることです。私は立ち往生しています。しかし、あなたが実際に複数値フィールドを使用していることがわかったので、他の誰かがより適切な提案を提供できるかもしれません。

于 2010-05-08T14:14:31.453 に答える