【问题标题】:Ensure Unique Records in Form (MS Access)确保表单中的唯一记录 (MS Access)
【发布时间】:2021-07-15 11:58:04
【问题描述】:

在 MS Access 中使用表单,我需要确保只有唯一的记录输入到表中。

不幸的是,我无法通过表的主键强制执行唯一记录。

我在表单的更新前有以下代码,但它不起作用。任何帮助将不胜感激!

Private Sub Form_BeforeUpdate(Cancel As Integer)
If DCount("*", "[Role_Details]", "[Role] = " & Me.[ComboRole] & " AND [Session] = " & Me.[ComboSession]) > 0 Then
    MsgBox "Duplicate!"
    Cancel = True
    Me.[ComboSession].SetFocus
    Exit Sub
End If
End Sub

注意:表名是“Role_Details”。字段名称是“角色”和“会话”。使用“ComboRole”和“ComboSession”作为表单字段标签。

对我在这里出错的地方有什么想法吗?

更新##

当我打开数据表表单时,它会显示一个弹出框,上面写着“输入参数值”和“frm_Role_Details.Session”。我不确定这是为什么,但我可以输入过去并打开表单。

然后,他们我正在输入一条记录,弹出一个错误说“运行时错误'2465':找不到你的表达式中提到的字段'|1'。两个字段都是文本字符串。我'我不知所措!

【问题讨论】:

  • 什么不起作用?只是没有产生您期望的结果,还是代码本身产生了错误?
  • 听起来像是没有正确转义值的问题。查看How do I use parameters in VBA in the different contexts in Microsoft Access? 以避免这些。
  • 组合输出是什么数据类型?它们是数字类型还是字符串类型?需要括号吗?这也可能有助于和陷阱错误? support.microsoft.com/en-us/office/…
  • 当我打开数据表表单时,它会显示一个弹出框,上面写着“输入参数值”和“frm_Role_Details.Session”。我不确定这是为什么,但我可以输入过去并打开表格。然后,他们我正在输入一条记录,弹出一个错误说“运行时错误'2465':找不到你的表达式中提到的字段'|1'。两个字段都是文本字符串。我在上面提到的两点都损失了。
  • “成为表单字段标签”是什么意思?这些是组合框的名称吗?

标签: vba ms-access ms-access-forms dlookup


【解决方案1】:

在 VBA 中连接时,文本字段需要用撇号分隔符作为输入。

If DCount("*", "[Role_Details]", "[Role] = '" & Me.[ComboRole] & "' AND [Session] = '" & Me.[ComboSession] & "'")> 0 Then

日期/时间字段使用# 分隔符。

数字字段不使用任何分隔符。

【讨论】:

  • 工作就像@June7 的魅力,非常感谢!!
猜你喜欢
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多