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