vba - 确保表单中的唯一记录 (MS Access)
问题描述
在 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'。两个字段都是文本字符串。我在损失!
解决方案
在 VBA 中连接时,文本字段需要撇号分隔符作为输入。
If DCount("*", "[Role_Details]", "[Role] = '" & Me.[ComboRole] & "' AND [Session] = '" & Me.[ComboSession] & "'")> 0 Then
日期/时间字段使用#
分隔符。
数字字段不使用任何分隔符。
推荐阅读
- mysql - 重力表单根据 mysql 表值验证字段条目值
- python - 来自谷歌 colab 的 SSH 密钥
- javascript - Node.js, Express: next 没有定义,
- process - 如何在不使用 Rackpick/store 或 Dynamic Systems 的情况下模拟仓库?
- kotlin - Gradle 包装器导致“类路径中的 JAR 文件应该具有相同的版本”错误
- html - 如何交叉检查html中的提示输入
- javascript - 为什么不同架构下 Javascript 的字节码(v8 引擎)生成不同
- unity3d - 斜坡上的树干漂浮在统一地形上
- go - GOPATH入口是相对的,必须是绝对路径,怎么解决
- python - VS Code 中 django 的 Virtualenv 不起作用,我做错了什么?