子表单中每个相关记录的空字段

Empty field for each related record in subform

关于 MS Access 数据库。

  1. 主表单(客户端)包含字段 Case 和 OriginalCase

  2. 主表单按钮 #1(停用)将值从 Case 复制到 OriginalCase 并清除 Case 值

  3. 主表单按钮 #2 (Command297) 将值从 OriginalCase 复制回 Case(如恢复备份)

  4. 主窗体包含子窗体 (ClientDBHistory),在主窗体中显示每个客户的多条记录(对于主窗体中的每个客户,它显示子窗体中的所有相关记录)

  5. 子表单已链接 OriginalCase 字段

我试过对 Button #1 使用类似的编码,它只替换了子表单的 Casenum 的 1 个值,而不是所有相关的值。按钮 #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 对子表单中的所有相关记录执行相同的操作。 (不是新按钮)。

Master 有 Casenum 123456 子表单显示 123456 在不同日期的所有相关条目

按钮 #1 将 Master 的 Casenum 复制到 OriginalCase 并清除 Casenum。对于子表单中的所有相关条目 123456,从子表单的 Casenum 到 OriginalCase,然后清除子表单的 Casenum,应该发生同样的情况。 按钮 #2 是将 Master 和 Subform 的 OriginalCase 恢复到记录中(不清除 OriginalCase)

你必须从 table 而不是形式的角度来看这个问题。您没有提供有关 table 结构的任何信息,因此我只能提供一般性指导。你需要的按钮是这样的:

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

编辑:这是 OP 用来解决问题的代码的 (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 是一个文本字段,否则代码可以进一步简化。

作为补充说明,可以永久禁用 运行 操作查询的警告,而不必一直禁用和启用它们。