运行代码时出现以下错误,当代码开始循环时,我在两个表之间进行了嵌套循环,但是在表2中结束时,出现了以下错误
未为字符串“ 9”定义运算符'=',并键入'DBNull'。
Do While Not rs1.EOF()
Do While Not rs2.EOF()
If rs1("Number").Value = rs2("CDNumber").Value Then
rs1("Matched").Value = "Yes"
rs1.Update()
rs2.MoveFirst()
rs1.MoveNext()
End If
rs2.MoveNext()
Loop
Loop
答案 0 :(得分:0)
我相信会出现此错误,因为在某些时候,您的循环试图比较字符串和空值。我不认为这是有效的比较。检查您的数据集是否为NULL值。
它可能发生在以下行:If rs1("Number").Value = rs2("CDNumber").Value Then
答案 1 :(得分:0)
尝试以下代码:
检查计算中使用的数据是否为NULL总是明智的。例如:
IIF(IsDBNull(MyValue),0,MyValue)
如果MyValue为null,则返回零,否则返回零。
Do While Not rs1.EOF()
Do While Not rs2.EOF()
If
IIF(IsDBNull(rs1("Number").Value),0,rs1("Number").Value) =IIF(IsDBNull(rs2("CDNumber").Value),0,rs2("CDNumber").Value) Then
rs1("Matched").Value = "Yes"
rs1.Update()
rs2.MoveFirst()
rs1.MoveNext()
End If
rs2.MoveNext()
Loop
Loop
解决方案2:使用If条件为IsDbNull值添加额外的验证。
Do While Not rs1.EOF()
Do While Not rs2.EOF()
If NOT IsDbNull(rs1("Number")) And Also NOT IsDbNull(rs2("CDNumber")) Then
If IIF(IsDBNull(rs1("Number").Value),0,rs1("Number").Value) =IIF(IsDBNull(rs2("CDNumber").Value),0,rs2("CDNumber").Value) Then
rs1("Matched").Value = "Yes"
rs1.Update()
rs2.MoveFirst()
rs1.MoveNext()
End If
End If
rs2.MoveNext()
Loop
Loop
解决方案3:仅对IsDbNull值使用If条件。
Do While Not rs1.EOF()
Do While Not rs2.EOF()
If rs1("Number").Value = rs2("CDNumber").Value Then
rs1("Matched").Value = "Yes"
rs1.Update()
rs2.MoveFirst()
rs1.MoveNext()
End If
rs2.MoveNext()
Loop
Loop