Пустое поле для каждой связанной записи в подчиненной форме - PullRequest
0 голосов
/ 07 февраля 2019

Относительно базы данных MS Access.

  1. Основная форма (клиенты) содержит поля Case и OriginalCase

  2. Кнопка основной формы № 1 (деактивировать) копирует значение из Case в OriginalCase и очищает значение Case

  3. Кнопка Master Form # 2 (Command297) копирует значение из OriginalCase обратно в Case (как восстановление резервной копии)

  4. Основная форма содержит подчиненную форму (ClientDBHistory), показывающую несколько записей для каждого клиента в главной форме (для каждого клиента в главной записи отображаются все связанные записи из подчиненной формы)

  5. Подформа связанаПоля OriginalCase

Я пытался использовать аналогичное кодирование для кнопки # 1, и оно заменяет только 1 значение Casenum подчиненной формы, а не все связанные.Кнопка # 2 не восстановила значение Casenum подчиненной формы.

Это было следующим образом:

Forms!Clients!ClientDBHistory.Form!OriginalCase = Forms!Clients!ClientDBHistory.Form!Casenum
Forms!Clients!ClientDBHistory.Form!Casenum = Null

Ниже мой код

Private Sub Command297_Click()
If IsNull(Me.[OriginalCase]) Then
MsgBox ("Cannot use this button if the Original Case field is empty. It will result in errors.")
ElseIf Not IsNull(Me.[OriginalCase]) Then
Me.[Casenum] = Me.[OriginalCase]
End If
End Sub

Private Sub Deactivate_Click()
If IsNull(Me.[Casenum]) Then
MsgBox ("Cannot use this button if the Casenum field is empty. It will result in errors.")
ElseIf Not IsNull(Me.[Casenum]) Then
Me.[OriginalCase] = Me.[Casenum]
Me.[Casenum] = Null
End If
End Sub

Я хочу кнопки #1 и # 2, чтобы выполнить одинаковые действия для всех связанных записей в подчиненной форме.(Не новые кнопки).

Т.е.

Мастер имеет Casenum 123456 Субформа показывает все связанные записи из 123456 в разные даты

Кнопка # 1 копирует Casenum мастера в OriginalCase и очищаетCasenum.Затем то же самое должно произойти для всех связанных записей 123456 в Subform, от Casenum Subform до OriginalCase и очистить Casenum Subform.Кнопка № 2 предназначена для восстановления OriginalCase как Master, так и Subform в записях (без очистки OriginalCase)

1 Ответ

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

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

DoCmd.RunSQL "UPDATE [MyTable] SET [Values I want change] WHERE [limit changes to the records displayed in the form]"
Rem Repeat if you need to UPDATE more than one table and your table relationships are not set to update
Me.Requery

Редактировать: Это упрощенная (IMO) версия кода, который ОП использовал для решения проблемы:

DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblClient SET Casenum=OriginalCase WHERE OriginalCase=' & Me.OriginalCase & "'"
DoCmd.RunSQL "UPDATE tblPayments SET Casenum=OriginalCase WHERE OriginalCase=' & Me.OriginalCase & "'"
Me.Requery
DoCmd.SetWarnings True

Упрощение основано на работе в контексте основной формы и что OriginalCase является полем, которое связывает форму и субформу и поэтому одинаково в обеих формах.Я предполагаю, что OriginalCase является текстовым полем, в противном случае код можно еще больше упростить.

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

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