使用 Access 2007。
我必须将几个数据输入字段与其相应的表格字段进行比较。如果字段匹配,则不要添加新记录。如果没有,请添加包含这些值的新记录。
AnimalInfo Table fields
WHno (Wildlife Health Number)
Species
LETClr1 (Left Ear Tag Color 1)
LETNo1 (Left Ear Tag Number 1)
LETClr2 (Left Ear Tag Color 2)
LETNo2 (Left Ear Tag Number 2)
RETClr1 (Right Ear Tag Color 1)
RETNo1 (Right Ear Tag Number 1)
RETClr2 (Right Ear Tag Color 2)
RETNo2 (Right Ear Tag Number 2)
Form F_HotelForm unbound fields
txtSpecies
txtLETClr1
txtLETNo1
txtLETClr2
txtLETNo2
txtRETClr1
txtRETNo1
txtRETClr2
txtRETNo2
我正在尝试创建一个 DCount 来检查是否有任何匹配的记录。动物的独特性取决于其物种和耳标信息。它可以有一个耳标编号和颜色,也可以有四个。(一些旧数据没有,但我对此无能为力!在这种情况下,将生成一条新记录,即新的野生动物健康编号)
这就是我想用这个表格完成的:
如果没有匹配的字段 (DCount = 0),则添加新记录并将表单中的字段更新到表中。
如果有 1 条匹配记录,则显示动物的野生动物健康编号(最终以新形式显示)
如果有多个记录,则这些记录以另一种形式显示,用户需要选择正确的动物。
LETClr1 和 LETNo1 是配对的。
LETClr2 和 LETNo2 是配对的。
RETClr1 和 RETNo1 是配对的。
RETClr2 和 RETNo2 是配对的。
任何和所有这些字段都可以有值,也可以没有。左耳标签编号和颜色可以作为 LETClr1 或 LETClr2 输入,因此我必须将 LETClr1 和 LETClr2 与 txtLETClr1 数据条目进行比较。(这适用于所有配对字段)
以下是到目前为止的脚本示例。这是非常初级的,因为我对此很陌生,只是想看看什么是有效的。
Private Sub GenerateWHno_Click()
Dim rs As DAO.Recordset
If IsNull(Forms!F_HotelEntry!txtSpecies) Or (Forms!F_HotelEntry!txtSpecies) = "" Then
MsgBox "Species is a required field. Please enter a species"
Exit Sub
End If
MsgBox txtSpecies
SpeciesCount = DCount("[Species]", "AnimalInfo", "[Species]= '" & txtSpecies & "'AND [L_ET_Color1]='" & txtL_ET_Color1 & "' AND [L_ET_No1]='" & txtL_ET_No1 & "'")
If SpeciesCount > 1 Then
MsgBox SpeciesCount & " Greater than 1"
ElseIf SpeciesCount = 0 Then
MsgBox "You need a new WHno"
WHno = Nz(DMax("WHno", "AnimalInfo")) + 1
MsgBox WHno
Set rs = CurrentDb.OpenRecordset("AnimalInfo")
rs.AddNew
rs!WHno = WHno
rs!Species = txtSpecies
rs!L_ET_Color1 = txtL_ET_Color1
rs!L_ET_No1 = txtL_ET_No1
rs!R_ET_Color2 = txtR_ET_Color2
rs.Update
rs.Close
Else
End If
Forms!F_HotelEntry!txtSpecies = ""
Forms!F_HotelEntry!txtL_ET_Color1 = ""
Forms!F_HotelEntry!txtL_ET_No1 = ""
End Sub
所以问题是我不能连接 NULL 字段。DCount 仅在表单/表中有非 Null 数据时才有效。
关于如何解决这个问题的任何想法?
非常感谢。
我的评论越来越乱,所以我把原始帖子放在下面。
我将建议的代码复制到模块中并用几种不同的方式重写了查询,但仍然收到错误消息:运行时错误 424。需要对象
SpeciesCount = DCount("[Species]", "AnimalInfo", "[Species] = txtSpecies AND (is_null([L_ET_Color1],"""") = is_null(txtL_ET_Color1,""""))")
SpeciesCount = DCount("[Species]", "AnimalInfo", "[Species] = '" & txtSpecies & "'AND is_null([L_ET_Color1],"") ='" & is_null(txtL_ET_Color1, "") & "' AND [L_ET_No1]='" & txtL_ET_No1 & "'")
我已经修补了 3 个小时,但离解决方案还差得远。我究竟做错了什么?