Резюме:
У меня есть таблица с первичным ключом, идентифицирующим каждую запись. У меня также есть еще три поля, которые могут идентифицировать запись:
- Категория
- CategoryNumber
- DuplicateNumber
Когда я добавляю новую запись и выбираю категорию, как я могу получить, чтобы CategoryNumber корректно увеличивался в зависимости от того, является ли он дубликатом или нет.
Обратите внимание, что это одна большая таблица. Это просто обновление от Excel до доступа.
tldr:
Вчера я спрашивал о том, как работать с несколькими ключами в Access. Может быть, я не задал правильный вопрос, потому что моя проблема сегодня еще более загадочная.
Вот что я пытаюсь сделать и где я застреваю.
Я создаю базу данных для отслеживания моих пленочных фотографий, снятых на различных пленках и в разных форматах с разных камер (всего 18 разных независимых фрагментов информации для каждой фотографии), которые охватывают почти 15 лет. Несколько лет назад я сохранил данные в MS Excel и запрограммировал форму ввода, чтобы сделать то, что я собираюсь объяснить.
Я хотел отслеживать фотографии двумя способами. Первым был номер основной фотографии, который позволил бы мне узнать, сколько всего фотографий было в моих файлах. Это был порядковый номер, который я никогда не намеревался удалить в этой последовательности. Это был бы номер, который бы однозначно идентифицировал каждую фотографию. Я вижу это как мой первичный ключ для всей базы данных.
Но я также хотел подать слайды, негативы и прозрачные пленки в соответствии с общими группами или категориями, чтобы я мог быстро вытащить их, если мне нужно было сделать фото или я искал что-то конкретное. Поэтому я также добавил идентификатор категории (например, к «Ландшафтам» добавлено имя «LS» или «Закаты» как «SS» и т. Д.). Я также хотел сохранить порядковый номер для каждого слайда в каждой категории. Так, например одна из моих первых фотографий в моей базе данных имеет PhotoID = 3, его Category = LS и его CategoryID = 1. Далее у меня есть PhotoID = 14, Category = LS и CategoryID = 2.
Теперь, в дополнение к этому, у меня есть еще один номер, который мне нужно отслеживать, и это было, если я делал дубликаты экспозиции одной и той же сцены. Для работы я просто добавил DuplicateNumber к каждой фотографии. Если у него не было дубликатов, то DuplicatNumber был равен 0, если у него было одно дублирование, а DuplicateNumber составлял 1, 2 дублирования, DuplicateNumber был равен 2 и т. Д.
Так что у меня было два способа найти любую фотографию в моих файлах. Либо по PhotoID, который был последовательным в Базе данных, но не в моих физических файлах, либо по комбинации Category, CategoryID и DuplicateNumber, которые являются тем, как я физически подаю фотографии.
Теперь в Excel, когда я открывал свою форму, мне сначала нужно было выбрать категорию для добавления фотографии с помощью переключателей на форме. Затем я бы заполнил все необходимые данные для фотографии. Когда я выполнил форму, она нашла бы последний номер в мастер-листе, увеличила его и добавила все данные в новую запись. Затем он активирует лист категории для выбранной категории, определит последний номер на этом листе, увеличит его и добавит новые данные.
Важным примечанием является то, что DuplicateNumber всегда равен 0 по умолчанию, если я не сделал его 1, 2 и т. Д. Он никогда не вычислялся, но я ввел его.
Когда я создавал метки слайдов («отчет»), я включал основной PhotoID, CategoryName, CategoryID и DuplicateNumber в этом формате (1LS1.0, 14LS45.0, 15LS45.1) и, кроме того, местоположение и дату. принимаются.
Но теперь я больше не хочу использовать Excel и пытался перенести базу данных в MS Access. Итак, у меня есть одна главная таблица под названием PhotoDetails.
PhotoID является первичным ключом в этой таблице. У этого есть поле PhotoCategory, которое является числом, которое имеет отношение к другой таблице под названием Категория. Его первичный ключ - PhotoCategoryID, и это также внешний ключ в PhotoDetails. PhotoCategoryID - это число, которое идентифицирует каждую категорию. В списке всех моих категорий LS номер 11. Но вот где я застреваю.
У меня есть CategoryNumber, который является номером, идентифицирующим фотографию в каждой категории, и DuplicateNumber, определяющий количество дубликатов, в таблице PhotoDetal. Что я не могу понять, так это когда я добавляю новую фотографию, как мне увеличить CategoryNumber? Форма, которую я сейчас имею, позволяет мне вводить все данные, и когда я нажимаю, чтобы ввести следующую, она автоматически вводит ключ PhotoID, но как насчет CategoryNumber? Я не могу вспомнить, какой последний номер для каждой категории, чтобы я мог ввести этот номер в себя. Если только я не подражаю тому, что сделал в Excel, сохраняя все данные дважды, один раз в PhotoDetails (он же главный лист в Excel) и снова в нескольких таблицах категорий. Я надеялся, что Access сможет дать мне обходной путь.
В настоящее время у меня есть отношения, которые связаны с таблицей PhotoDetails в категории 1-M. У меня также есть несколько других таблиц, все связанные в соотношении 1-M (например, таблица Film хранит различные пленки, которые я использовал, а отношение 1-M позволяет мне связать, какой фильм с каждым слайдом, и большинство других данных хранятся в этом способ).
У меня есть 31 разных категорий. У каждой фотографии есть номер категории и номера категории, а также дубликат. Я выберу категорию при вводе данных и DuplicateNumber, но я хочу, чтобы номер CategoryID, а также PhotoID увеличивались автоматически для меня. Как правильно поступить, если мне нужно сохранить только одну таблицу PhotoDetail, которая не дублируется для каждой категории, как я делал в Excel.