У меня есть форма с 2 под формами:
- Основная форма: PaymentDetails
- Подчиненная форма 1: UnreleasePayments
- Подформа 2: ReleasedPayments
Идея состоит в том, что пользователь может перемещать платежные записи междуподчиненная форма 1 и подчиненная форма 2 путем обновления столбца «Статус платежа»:
Это можно сделать массовым образом, например, с помощью созданных мной командных кнопок.если для всех удерживаемых платежей установлено значение «Выпуск», все они перемещаются в нижнюю подчиненную форму:
... или это можно сделать для каждой записипутем изменения поля со списком Pay Status:
Issue : проблема возникает при обновлении поля со списком Pay Status обновлений из подчиненной формы2 для подчинения 1 (то есть от «Отпустить» к «Удерживать»).Любой другой сценарий кажется нормальным.
При первом установлении платежа из «Отпустить» в «Удержание» через поле со списком запись корректно исчезает из подчиненной формы 2 ...
... но по какой-то причине запись не отображается в подчиненной форме 1, даже если общее значение, рассчитанное для подчиненной формы 1, предполагает наличие записи:
Если я переместу следующую запись с «Отпустить» на «Удерживать», эта запись будет отображаться, но все равно не будет никаких признаков первой записи, которую я переместил (такжеобщее значение, рассчитанное для подчиненной формы, по-прежнему на 500 фунтов больше, чем отображается):
Когда я перемещаю окончательную запись из "Release" в "Hold"все 3 записи теперь фактически отображаются в подчиненной форме 1:
Основная форма привязана к таблице с именем PaymentRun.Подчиненные 1 и 2 используют запросы для отображения своих данных, но оба используют таблицу под названием Payments, для которой установлена связь с PaymentRun, где PaymentRunID - это PK of PaymentRun и FK of Payments.
Когда установлен PayStatus записидля «Освобождения» некоторые VBA назначат PaymentRunID из основной формы в PaymentRunID платежной записи (и удаляют его, когда PayStatus имеет значение «Hold» или не заполнено).
Subform 2 (ReleasedPayments)настраивается как дочерний элемент основной формы, поэтому каждый раз, когда запись о платеже получает основной платеж, форма FormRunID будет отображать запись в подчиненной форме 2.
подчиненная форма 1 (UnreleasedPayments) не связана с основнойи отображает записи на основе строки, передаваемой в его свойство .Filter
.
Вот код в порядке, в котором он должен запускаться из события change комбинированного окна PayStatus в Subform 2 (ReleasedPayments):
Событие изменения cboPayStatus:
If _
Me.cboPayStatus.Value = "Hold" _
Then
Me.PaymentRunID.Value = Null
ElseIf _
Me.cboPayStatus.Value = "Release" _
Then
Me.PaymentRunID.Value = Me.Parent!PaymentRunID.Value
End If
Call PaymentsFilter
Call PaymentsRequery
Sub PayFileFilter (для filteкольцевая подчиненная форма 1):
Dim strUnreleased As String
strUnreleased = ""
strUnreleased = "[PaymentPeriod] IN " _
& "(SELECT PayPer.PaymentPeriod " _
& "FROM PaymentPeriod PayPer " _
& "WHERE PayPer.PaymentPeriodSort <=" & Forms!PaymentDetails!cboPaymentPeriod.Column(1) & ") " _
& "AND [EDRSRef] = '" & Forms!PaymentDetails!cboEmployer & "' " _
& "AND ([PaymentStatus]='Hold' Or [PaymentStatus] IS NULL)"
Forms!PaymentDetails!PaymentDetails_sub.Form.Filter = strUnreleased
Forms!PaymentDetails!PaymentDetails_sub.Form.FilterOn = True
подпрограмма PaymentsRequery (для запроса подчиненной формы 2 и перевода освобожденного значения платежа в сумму прогона платежей)
Forms!PaymentDetails!PaymentDetailsRelease_sub.Form.Requery
Forms!PaymentDetails!txtRelVal.Requery
Forms!PaymentDetails!PaymentRunAmount.Value = Forms!PaymentDetails!txtRelVal.Value