MS Access:自动更新同一表中的字段

时间:2011-07-08 15:29:35

标签: ms-access ms-access-2007

很抱歉,但对于这样的事情,我不是很有经验。

我有一个名为“Measure Table”的表,其中包含“ID”,“Proxy”和“ProxyID”字段。

我根据此表创建了一个表单。 ID是从表中预先填充的标签。代理是一个下拉菜单,其中包含选项“For”或“From”。 ProxyID包含一个与ID相同的下拉列表。

我希望用户转到表单中的特定记录(例如ID:I800),从Proxy下拉列表中选择“For”,然后选择ProxyID(比如说L800)。对于L800的记录,我希望它自动将代理更改为“From”,将ProxyID更改为I800。

这可以在Access中使用吗? 非常感谢您提供的任何帮助

以下是我想要发生的事情的视觉效果:

我希望在更新之前表格看起来像这样(当用户选择“For”和“L800”时):

记录#ID代理ProxyID

1 I800 For L800

2 L800

然后该表自动更新为:

记录#ID代理ProxyID

1 I800 For L800

2 L800来自I800

1 个答案:

答案 0 :(得分:1)

好的,这是解决当前问题需要做的事情的要点(更新另一个表中的相应行。

只需向表单的AfterUpdate事件添加一个事件处理程序,即可对另一行执行更新。代码看起来应该与此非常相似......

Private Sub Form_AfterUpdate()
  Dim RelatedID As String
  Dim Proxy As String

  If (UCase(Me.Form!Proxy) = "FOR") Then
    RelatedID = Me.Form!ProxyID
    CurrentID = Me.Form!ID

    DoCmd.RunSQL ("UPDATE [Measure Table] SET ProxyID='" & CurrentID & "',  Proxy='From' WHERE ID='" & RelatedID & "'")

  End If
End Sub

警告:

正如我在评论中提到的,这种数据结构是一个非常糟糕的主意,并会创造出很多额外的工作,您可以根据您指定的,当然这种设计的问题隐含规则维护数据的完整性。我意识到你有一个现有的数据库需要处理,但坦率地说,修复数据库设计可能比从长远来看维护这个数据库要少。

您没有询问的其他一些注意事项,但需要处理:

  1. 如果有人更新,会发生什么 一对中的任何一个条目 直接在表中而不是 用你的表格?真的没有 应用上述逻辑运行时的好方法 除了在使用表格的情况下。
  2. 如果由于某种原因相关行不存在,此代码会发生什么?
  3. 如果在表格中更新了相关的行“The FROM”行,会发生什么?
  4. 如果从表中删除任一行会怎样?