【问题标题】:How to update if data in table is changed?如果表中的数据发生更改,如何更新?
【发布时间】:2021-06-04 02:26:02
【问题描述】:

我有一个结帐表单,其中包含两个未绑定的组合框 - 框架 ID 和项目名称,以及一个按钮 - 分配框架。

Assign Frame 按钮具有以下用于更新 StockFrames 表的工作代码:

Private Sub AssignFrame_Click()

CurrentDb.Execute "UPDATE StockFrames SET ProjectID = " & Me.Project & _
      " WHERE FrameID = " & Me.FrameID

Me.Project.Value = Null
Me.FrameID.Value = Null
End Sub

如果用户尝试将不可用的框架分配给项目,我希望出现一个消息框:“此框架当前分配给另一个项目。您确定要覆盖吗?是/否”

我知道这需要是一个 if/then 语句,涉及 StockFrames.ProjectID Null。

另外,这应该是更新前事件还是更适合其他地方?

【问题讨论】:

  • 可以使用 DLookup 首先检查框架是否已在使用中。或者甚至可以将组合框设置为不提供使用过的框架作为选择。
  • 等等,我刚刚又读了一遍。代码将项目分配给框架,而不是框架分配给项目。什么是关系——每个项目可以有多个框架而框架只有一个项目吗?编辑问题以将架构和示例数据显示为文本表。

标签: vba ms-access


【解决方案1】:

使用 DLookup 或 DCount 首先检查 frameID 是否已在使用中。代码可以进入 Click 事件。

If IsNull(DLookup("ProjectID", "StockFrames", "FrameID=" & Me.FrameID)) Then
    CurrentDb.Execute ...
Else
    MsgBox "your message here"
End If

更好的选择可能是组合框 RowSource,它不包含已使用的 FrameID 值,因此用户甚至无法选择它们。
SELECT FrameID, FrameDesc FROM StockFrames WHERE ProjectID Is Null;
然后在 Click 事件中重新查询组合框。
请注意,条件组合框不适用于连续或数据表视图中的绑定表单,但由于您似乎使用的是 UNBOUND 表单,这应该不是问题。

【讨论】:

  • 正是我需要的。谢谢!完美运行。
猜你喜欢
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2012-12-04
相关资源
最近更新 更多