概要:
各レコードを識別するuique主キーを持つテーブルがあります。レコードを識別できるフィールドがさらに3つあります。
- カテゴリー
- カテゴリ番号
- DuplicateNumber
新しいレコードを追加してカテゴリを選択した場合、重複しているかどうかに基づいて、CategoryNumberを正しくインクリメントするにはどうすればよいですか。
これは1つの大きなテーブルであることに注意してください。これは、ExcelからAccessへのアップグレードにすぎません。
tldr:
昨日、Accessで複数のキーを処理する方法について質問しました。私の問題は今日さらに不可解であるため、私は正しい質問をしなかったのかもしれません。
これが私がやろうとしていることと私が行き詰まっているところです。
私は、約15年前にさかのぼる、さまざまなカメラでさまざまなフィルムやフォーマットで撮影されたフィルム写真(写真ごとに合計18の異なる独立した情報)を追跡するためのデータベースを作成しています。数年前、私はデータをMS Excelに保存し、説明しようとしていることを実行するように入力フォームをプログラムしました。
私は2つの方法で写真を追跡したかった。1つ目は、ファイルにある写真の総数を知らせるマスター写真番号でした。それは私がそのシーケンスで何かを削除するつもりはなかったシーケンス番号でした。これは、各写真を一意に識別する番号になります。これは、データベース全体の主キーだと思います。
ただし、スライド、ネガ、OHPフィルムを一般的なグループやカテゴリに応じてファイリングして、写真を提出する必要がある場合や特定の何かを探している場合にすばやくプルできるようにしたかったのです。そこで、カテゴリ識別子も追加しました(たとえば、Landscapesには「LS」という名前が付けられているか、Sunsetsには「SS」などが付いています)。また、各カテゴリに含まれる各スライドの連続番号を保持したいと思いました。たとえば、データベース内の最初の写真の1つにPhotoID = 3、Category = LS、CategoryID = 1があります。さらに下に行くと、PhotoID = 14、Category = LS、CategoryID=2になります。
これらに加えて、追跡する必要のある別の番号があります。これは、同じシーンを重複して露光した場合です。これを機能させるために、各写真にDuplicateNumberを追加しました。重複がない場合、DuplicatNumberは0であり、DuplicateNumberが1、2重複、DuplicateNumberが2などよりも1つの重複がある場合。
そのため、ファイル内の写真を見つけるには2つの方法がありました。データベースではシーケンシャルであるが物理ファイルではシーケンシャルではないPhotoID、または写真を物理的にファイルする方法であるCategory、CategoryID、およびDuplicateNumberの組み合わせのいずれかによって。
Excelでフォームを開いたとき、最初にフォームのラジオボタンを使用して写真を配置するカテゴリを選択する必要がありました。次に、写真に関連するすべてのデータを入力します。フォームを実行すると、マスターシートの最後の番号が検索され、それがインクリメントされて、すべてのデータが新しいレコードに追加されます。次に、選択したカテゴリのカテゴリシートをアクティブにし、そのシートの最後の番号を決定し、それをインクリメントして、そこに新しいデータを追加します。
重要な注意点は、DuplicateNumberは、1、2などにしない限り、defalutによって常に0になることです。計算されることはありませんでしたが、入力しました。
スライドラベル(「レポート」)を作成したとき、メインのPhotoID、CategoryName、CategoryID、DuplicateNumberをこの形式(1LS1.0、14LS45.0、15LS45.1)で含め、さらに場所と撮影日を含めました。
しかし、今はもうExcelを使いたくないので、データベースをMSAccessに移行しようとしました。つまり、PhotoDetailsというメインテーブルが1つあります。
PhotoIDは、このテーブルの主キーです。これには、Categoryと呼ばれる別のテーブルと関係のある番号であるPhotoCategoryフィールドがあります。その主キーはPhotoCategoryIDであり、PhotoDetailsの外部キーでもあります。PhotoCategoryIDは、各カテゴリを識別する番号です。私のすべてのカテゴリーのリストでは、LSは11番です。しかし、ここで行き詰まります。
PhotoDetalテーブルには、各カテゴリの写真を識別する番号であるCategoryNumberと、重複の数を識別するDuplicateNumberがあります。新しい写真を追加するときに、CategoryNumberをインクリメントするにはどうすればよいですか?私が今持っているフォームでは、すべてのデータを入力できます。クリックして次のデータを入力すると、PhotoIDキーが自動的に入力されますが、CategoryNumberはどうでしょうか。各カテゴリーの最後の番号が何であるか思い出せないので、自分でその番号を入力します。すべてのデータを2回保存してExcelで行ったことを模倣しない限り、1回はPhotoDetails(Excelではマスターシート)に、もう1回は複数のカテゴリテーブルに保存します。Accessが回避策を提供してくれることを期待していました。
現在、私が持っている関係は、1-M関係でPhotoDetailsにリンクされているCategoryテーブルです。他にもいくつかのテーブルがすべて1-Mリレーションでリンクされています(たとえば、テーブルFilmは使用したさまざまなフィルムを格納し、1-Mリレーションを使用すると、どのフィルムを各スライドにリンクでき、他のほとんどのデータはその中に格納されます)仕方)。
私は31の異なるカテゴリーを持っています。各写真には、カテゴリ番号とカテゴリID番号、および重複番号があります。データ入力時にカテゴリとDuplicateNumberを選択しますが、CategoryID番号とPhotoIDを自動的にインクリメントしたいと思います。これを進める正しい方法は、Excelで行ったように、カテゴリごとに複製されないPhotoDetailテーブルを1つだけ保持する必要がある場合です。