У меня есть две таблицы, которые связаны с общим полем. Я пытаюсь настроить сценарий или макет или все, что может работать для достижения следующего. Мне нужно иметь возможность выбирать определенные записи из таблицы 1, а затем дать мне представление, которое позволит мне добавить запись в таблицу 2 для каждой из выбранных записей в таблице 1. Таблица 2 имеет несколько полей, которые я хотите завершить только один раз для всех выбранных записей. Я предполагаю, что мне нужно настроить скрипт с циклом, но если кто-то может начать меня с основ, я бы очень признателен. Или, если есть способ сделать это с макетом, это тоже здорово! Использование Filemaker Pro 12.Filemaker Pro добавляет запись для каждой выбранной записи в другую таблицу
ответ
Если я правильно понимаю, вы описываете взаимосвязь между крупным рогатым скотом и событиями «многие ко многим»: каждое животное может иметь несколько связанных событий; и событие может относиться к более чем одному животному.
Если это правильно, вам потребуется третий присоединиться стол, чтобы решить многие-ко-многим в два один-к-многим:
Cattle -<CattleEvents>- Events
Как это работает, вы входите данные события один раз в таблицу Event, а затем приступить к связыванию разных животных с событием, создав запись объединения в таблице CattleEvents для каждого. Таблица соединений должна содержать (по крайней мере) поля для CattleID и EventID.
В отличие от других РСУБД, Filemaker также позволяет создавать отношения «многие-ко-многим» без таблицы соединений; вы можете определить поле CattleID в таблице Events как текст и отформатировать его как флажок, используя список значений CattleID. Однако этот «ярлык» имеет много недостатков, когда речь идет о суммировании и отчетности. Другая проблема с этим методом заключается в том, что вы не можете записывать что-либо конкретное о соединении: например, с помощью таблицы соединений вы можете не только регистрировать событие вакцинации, затрагивающее 46 выбранных животных; вы также можете записать индивидуальную дозу, полученную каждым животным, введя ее в поле в таблице соединений.
ДОБАВЛЕНО:
После того как вы желаемая нашли набор в таблице крупного рогатого скота, перейти к таблице событий, создать новую запись, то есть скрипт, выполните следующие действия:
Set Variable [ $eventID ; Events::EventID ]
#
Go to Layout [ Cattle ]
Go to Record [ First ]
Loop
Set Variable [ $cattleIDs ; List ($cattleIDS ; Cattle::CattleID) ]
Go to Record [ Next ; Exit after last ]
End Loop
#
Go to Layout [ CattleEvents ]
Loop
Set Variable [ $i ; $i + 1 ]
Exit Loop If [ $i > ValueCount ($cattleIDs) ]
New Record
Set Field [ CattleEvents::EventID ; $eventID ]
Set Field [ CattleEvents::CattleID ; GetValue ($cattleIDs ; $i) ]
End Loop
#
Go to Layout [ original layout ]
В конце сценария вы должны вернуться в таблицу «События» со всем скотом из найденного набора в таблице скота, который появляется на портале CattleEvents (если вы разместили такой портал на макете событий). На этом портале вы можете добавить конкретные данные для каждого животного, связанного с событием.
На самом деле я думал, что каждое событие, хотя оно может иметь одинаковые детали, было бы уникальным, так что это было бы одностороннее соединение. У меня могут быть два события, которые имеют идентичные данные (вакцинация, дозировка, дата и т. Д.), Но они были бы уникальными, потому что ключевой элемент и идентификатор события были бы разными. Я уже установил список значений для некоторых полей таблицы событий, которые должны избегать необходимости в третьей таблице. Одна корова может иметь много событий, но все же они все еще являются уникальными записями из-за уникального идентификатора в поле идентификатора таблицы событий. – user1399145
Я боюсь, что вы говорите две разные вещи одновременно. Если у вас есть «два события, которые имеют идентичные детали», то на самом деле у вас есть только одно событие. Прерывание его в нескольких записях со всеми повторяющимися «идентичными деталями» создало бы точную избыточность, о которой я пытался вас предупредить. «Два события» не уникальны; только участие в (одном) событии. –
Я вижу каждое событие как конкретное для коровы. Да, я мог бы составить таблицу событий, а затем связать крупный рогатый скот с событием или просто создать отдельную запись событий для каждого животного. Создание события, характерного для животного, имеет для меня преимущества, потому что я могу добавлять примечания, характерные для животного. Возможно, использование слова «событие» сбивает с толку, возможно, действие было бы лучше. Хотя я мог бы дать 40 крупным рогатым скотам те же самые выстрелы, я предпочел бы иметь 40 записей действий, чтобы я мог добавить любую дополнительную информацию о животных, если захочу. – user1399145
Это довольно сложно. Пожалуйста, дайте ваши таблицы ** значащим ** именам и укажите, что является «одним» и «много» в отношениях. Знание цели также поможет; прямо сейчас звучит так, как будто вы можете дублировать некоторые данные, которые нет в реляционной базе данных. –
Я не хочу дублировать данные. Это база данных управления крупным рогатым скотом. В таблице 1 приведена информация о крупном рогатом скоте с такими полями, как цвет, пол и т. Д., И имеет уникальный идентификатор идентификатора для каждой коровы/быка. Таблица 2 представляет собой таблицу событий, в которой я буду вводить события для большого количества крупного рогатого скота. Таблица 2 имеет поле CattleID, которое относится к id в таблице 1. Я хочу выбрать нескольких животных и иметь возможность вводить событие для каждого животного. – user1399145
Таблица 1: идентификатор (уникальный), цвет, пол, возраст Таблица 2: идентификатор (автогенерирующий, уникальный), cattleid (связанный с идентификатором таблицы 1), eventdate, event, notes – user1399145