0

何年も前に、私は自分の写真を追跡するために MS Excel でデータベースを作成しました。私がそれを設計した方法は次のとおりです。すべての写真の連続番号 ID を持つ主キーを持つマスター シートがありました。次に、風景 (LS)、海景 (SC)、夕焼け (SS) など、同じテーマの特定の写真を含むワークブックにいくつかのシートがありました。これらの各シートには、写真 ID を並べた主キーもありました。その主題。新しい写真を入力する必要があるときに開くフォームをプログラムしました。フォームが開くと、マスター シートの最後のレコードが決定され、主キーがシーケンス内の次の番号にインクリメントされます。次に、どのシートを選択しますか (写真の種類 - LS、SC、SS など)、その特定のシートの最後のレコード番号を次の番号に増分して決定し、それもフォームに入力します。次に、露出設定、場所、撮影日、キーワードなど、その写真に関する詳細を入力します。その後、このすべての情報をマスター シートと特定の主題シートの両方に書き込みます。最もエレガントではありませんが、私にとってはうまくいきました。

これを MS Access で複製したいのですが、マスター フォームを開いたときにマスター写真番号とサブジェクト写真番号の両方を同時にインクリメントする方法がわかりません。

MS Access で、Excel ワークブックのマスター シートに存在するすべてのフィールドを含むマスター テーブルを作成しました。マスター シートとサブジェクト シートの唯一の違いは、マスターには 2 つの列が追加されていることです。次の列には、特定の被写体の写真番号が含まれています。したがって、たとえば、マスター シート内の 2 つの連続したレコードは、slideID = 1245 subject = LS subjectID = 245、slideID = 1246 subject = SS subjectID = 127 のようになります。subject シートでは、subjectID が唯一の一意の識別子です。写真に関する他のすべての関連情報は、マスター シートとサブジェクト シートの両方に複製されます。

したがって、MS Access には、この 1 つのマスター テーブルがあります。写真情報を入力するために使用するフォームがあります。現在テーブルのプライマリキーであるマスター写真ID番号の両方をインクリメントし、フォームからサブジェクトを選択したらサブジェクトID番号をインクリメントするにはどうすればよいですか?

4

3 に答える 3

2

データを入力するのはあなただけなので、他の誰も同じ番号を取得できないため、DMax を使用しても安全です。テキストボックスのデフォルト値で DMax を使用することもできます。つまり、新しいレコードを作成するたびに数値が提案されます。レコードが作成されると、提案された数値が実際の数値になります。

=DMax("[slideID]","TableNameHere")+1

データベース設計を学ぶつもりなら、テーブルを正規化する必要があるため、やらなければならないことが他にもあります。リレーショナル データベース設計の基礎、Paul Litwin、2003を読むことをお勧めします。

于 2009-02-04T10:53:25.143 に答える
1

マスター写真テーブルには、特定の写真に必要なすべての情報が含まれている必要があります。「風景」だけを表示したい場合は、マスター テーブルを件名でフィルター処理するクエリを作成します。これにより、重複したエントリがなくなります。サブジェクト テーブル内の写真に関するフィールド/データは、マスター テーブルに移動できます。

写真に複数の主題が必要な場合は、Photo_Subject テーブルが必要です。必要なフィールドは、Photo_Subject_ID (自動番号)、PhotoID (マスター テーブルから)、SubjectID (または単に件名を入力) のみです。このようにして、同じ写真を何度でも入力して、必要な数の被写体と関連付けることができます。重複したエントリを回避するために、PhotoID と SubjectID にインデックスを追加できます。(はい、複合主キーを避けることをお勧めします)。

于 2009-02-04T13:56:05.447 に答える
0

形成できるさまざまなタイプの関係を調べたことがありますか? たとえば、1 対多の関係です。現在 Access で設定しているリレーションシップは何ですか?

于 2009-02-04T08:58:52.520 に答える