Как получить доступ к базе данных для автоматического добавления дочерних записей, если родительский уже существует - PullRequest
0 голосов
/ 26 января 2019

У меня есть база данных доступа, которую я использую для отслеживания качества поступающего сырья. Как правило, сырье, которое я получаю, это ткани. Форма, которую я построил для этого, имеет три слоя:

1- Информация об уровне отгрузки (номер заказа на поставку, общее количество отгрузок в отгрузке, поставщик, дата)
2- Информация об уровне рулона (Детали ткани, Размеры, показатель качества)
3- Информация об уровне дефекта (дефекты, обнаруженные в рулоне, размере, серьезности)

Одна партия может иметь много рулонов, и одна партия может иметь много дефектов, и в результате моя форма имеет три слоя. Пожалуйста, смотрите изображение ниже для справки.

enter image description here

Чего я хотел бы добиться, так это чтобы каждый раз, когда инспектор вводил номер заказа на поставку, если отгрузка уже существует в базе данных, он извлекает общее количество проверок, поставщика и дату поступления и позволяет добавлять дополнительные дочерние записи. , Если PO # еще нет в базе данных, это позволит для новой записи.

Я пробовал несколько вещей, но я не совсем уверен, с чего начать. Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 26 января 2019

Несколько вопросов, поэтому несколько частей: Убедитесь, что эти предположения соблюдены.В таблице отгрузок есть столбец первичного ключа с автоматическим номером, помеченный чем-то вроде ShipmentID (недостаточно информации, чтобы мы могли использовать PO # в качестве первичного ключа).Аналогично, таблица Roll имеет RollID, но также добавляет соответствующий ShipmentID в качестве внешнего ключа, чтобы сформировать соответствующее отношение 1 ко многим.Аналогичным образом присвойте таблице Defects первичный ключ DefectID и добавьте соответствующий RollID в качестве внешнего ключа.Если вам нужно переделать формы, нажмите на соответствующую таблицу и воспользуйтесь мастером форм.Это также поможет добавить отношения 1 ко многим на диаграмму отношений в инструментах базы данных.

Дело в том, что раздел проверки и дефекта вашей формы должны быть подформами, поэтому они будут фильтроваться при изменении PO# и RollID.Поэтому, если вам нужно перестроить форму, начните с: создания дефекта и сворачивания формы, которая выглядит как дефект и свертывание разделов вашей формы.Затем перетащите новую форму дефекта на новую форму рулонов, появится мастер, чтобы добавить подформу дефекта в форму ваших рулонов.Затем повторите, перетащив форму бросков, которая теперь имеет подформу дефектов, на форму отгрузки, которая выглядит как раздел ваших отгрузок.

  1. По умолчанию при доступе будут установлены каждая новая форма и подформа с селекторами записей.Эти селекторы записей позволяют пользователю как просматривать записи, так и добавлять новые записи.Поиграйте с ними или проверьте онлайн, чтобы узнать, как работают селекторы записей.Вот несколько полезных советов:

https://www.youtube.com/watch?v=90eOatOmHZA

Я думаю, это облегчает использование формы, если вы скрываете селекторы записей, а затем добавляете эквивалентные кнопки, как в этом видео:

https://www.youtube.com/watch?v=gL1taUzLQGE

Чтобы отфильтровать форму, набрав PO #, добавьте в форму несвязанное текстовое поле.Затем измените событие OnChange несвязанного текстового поля следующим образом:
Private Sub txtPOSearch_Change()
Dim strFilter As String
If Me.txtPOSearch.Text <> "" Then
‘ assuming 34 is typed in txtPOSearch then strFilter will equal: “PO# like “34*”
 strFilter = "PO# like " & Chr(34) & Me.txtPOSearch.Text & Chr(42) & Chr(34)
         Me.Filter = strFilter
        Me.FilterOn = True
    Else
       Me.Filter = ""
        Me.FilterOn = False
    End If
    Me.txtPOSearch.SetFocus
    Me.txtPOSearch.SelStart = Len(Me.txtPOSearch.Text)
End Sub

Источник:

https://answers.microsoft.com/en-us/office/forum/office_2007-access/filter-a-form-with-unbound-text-box-in-microsoft/aa6ebf52-c51a-4d28-8933-9618fdb6fee2

Предполагая, что поставщик и дата получения указаны в таблице отгрузок, они будут работать автоматически, но если в таблицу отгрузки включено общее количество ролей, удалите их, поскольку они являются избыточными.Вместо этого установите для текстового поля общих ролей следующее выражение:

DCOUNT («RollID», «Roles», «ShipmentID =« & [ShipmentID])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...