2016-12-12 21 views
0

問題:私はAccessでテーブルを作成しましたが、ユーザが複数の値を入力できますが、リストにあらかじめ定義されていないフィールドを追加しようとしています。 これらの値はすべて特定の形式を尊重する必要があります。アクセスは、事前定義されていない複数の値を許可する

私の現在のソリューション:

enter image description here enter image description here

私は検証ルールを持つコンボボックスを作成しました。 私はValue SourceとしてRow Source Typeも指定しましたが、ユーザーが自分で入力できるように値を入力しなかったため、検証ルールに従う場合にのみ使用することができます。

上記の図から分かるように、ユーザーはリストに値を追加できますが、値88は検証ルールに従わないため使用できませんでした。

残念ながら、これはユーザーが追加したすべての値が合計され、リストが時間とともに大きくなったり大きくなったりするため、良い解決策ではありません。もっと良い方法を知っていますか?

答えて

1

関連データベースシステムは、関連データを扱います。これらの関係を表現するのにテーブルを使用します。

この例では、各レコードが値のリストに関連するテーブルがあります。だからこのデータを保持し、この関係を表現する別のテーブルを持っています。

  • メインテーブルのプライマリキー(多くの場合、これは単一のIDですが、コンプライアンスキー、たとえば社員を識別するための会社番号と従業員IDなどの複合キーでもあります)
  • 4桁の値

そして、それは常に4桁の数字です保証するために、値列にcontraintを追加します。

特定のの4桁を許可したい場合は、これらを保持する別のテーブルを追加して、参照(つまり外部キー)として使用することもできます。

+0

あなたはすべての許容値の何十億というテーブルを作成しないことにします。しかし、前述のように* used *値のテーブルはまだあります。あなたの銀行の例では、クライアントレコード(あなたの「現在のソリューション」)にコンマ区切りの口座番号を含む文字列を保存するのではなく、クライアント用のテーブルとクライアントのアカウント用のテーブルが1つあります。後者には、顧客番号と口座番号が含まれます。 –

+0

銀行口座の場合、通常、アカウントごとに1つのクライアントしかないので、口座番号はその表の主キーになります。人々が1つの口座を共有できる別の設定では、クライアント番号と口座番号の両方が一緒になって表のPKを構成します。 –

+0

Thorsten、ありがとう、私はあなたのやり方をしようとします。あなたは正しいですが、私の銀行の例は顧客ごとに1つのアカウントしか持っていないので、それほど良いものではありませんでした。 – Seb

関連する問題