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

时间:2019-02-07 06:10:11

标签: ms-access button replace subform

关于MS Access数据库。

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

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

  3. “主表单”按钮2(Command297)将值从OriginalCase复制回Case(例如还原备份)

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

  5. 子窗体具有链接的OriginalCase字段

我尝试对按钮#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。然后,对于从Subform的Casenum到OriginalCase的Subform中的所有相关条目123456,都应该发生相同的情况,并清除Subform的Casenum。 按钮2用于将主表单和子表单的OriginalCase还原到记录中(无需清除OriginalCase)

1 个答案:

答案 0 :(得分:0)

您必须从表而不是表格的角度看这个问题。您没有提供有关表结构的任何内容,因此我只能提供一般指导。您需要的按钮是这样的:

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是一个文本字段,否则代码可以进一步简化。

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