Подформа не отображает отфильтрованные результаты изначально - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть форма с 2 под формами:

  • Основная форма: PaymentDetails
  • Подчиненная форма 1: UnreleasePayments
  • Подформа 2: ReleasedPayments

enter image description here

Идея состоит в том, что пользователь может перемещать платежные записи междуподчиненная форма 1 и подчиненная форма 2 путем обновления столбца «Статус платежа»:

enter image description here

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

enter image description here

... или это можно сделать для каждой записипутем изменения поля со списком Pay Status:

enter image description here

Issue : проблема возникает при обновлении поля со списком Pay Status обновлений из подчиненной формы2 для подчинения 1 (то есть от «Отпустить» к «Удерживать»).Любой другой сценарий кажется нормальным.

При первом установлении платежа из «Отпустить» в «Удержание» через поле со списком запись корректно исчезает из подчиненной формы 2 ...

enter image description here

... но по какой-то причине запись не отображается в подчиненной форме 1, даже если общее значение, рассчитанное для подчиненной формы 1, предполагает наличие записи:

enter image description here

Если я переместу следующую запись с «Отпустить» на «Удерживать», эта запись будет отображаться, но все равно не будет никаких признаков первой записи, которую я переместил (такжеобщее значение, рассчитанное для подчиненной формы, по-прежнему на 500 фунтов больше, чем отображается):

enter image description here

Когда я перемещаю окончательную запись из "Release" в "Hold"все 3 записи теперь фактически отображаются в подчиненной форме 1:

enter image description here

Основная форма привязана к таблице с именем 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

1 Ответ

0 голосов
/ 12 февраля 2019

Я не совсем уверен, в чем проблема, но переключение порядка этих двух исправило мою проблему:

Call PaymentsFilter
Call PaymentsRequery

Возможно, PaymentsRequery заставлял подчиненную форму 2 захватывать фокус, прежде чем PaymentsFilter завершил ееэффекты для подчиненной формы 1?

Если кто-нибудь может дать объяснение, мне все равно будет интересно.

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