Ms access 访问相同但不相等的字段?

Ms access 访问相同但不相等的字段?,ms-access,vba,Ms Access,Vba,我使用以下代码比较两个记录集: For i = 1 To (recordsetA.Fields.Count - 1) If recordsetA.Fields(i).Value <> recordsetB.Fields(i).Value Then stringFieldList = stringFieldList & ", " & recordsetA.Fields(i).Name End If Next i i=1到(records

我使用以下代码比较两个记录集:

For i = 1 To (recordsetA.Fields.Count - 1)
    If recordsetA.Fields(i).Value <> recordsetB.Fields(i).Value Then
        stringFieldList = stringFieldList & ", " & recordsetA.Fields(i).Name
    End If
Next i
i=1到(recordsetA.Fields.Count-1)的

如果记录集a.Fields(i).Value记录集b.Fields(i).Value则
stringFieldList=stringFieldList&“,”和recordsetA.Fields(i).Name
如果结束
接下来我

但是,在stringFieldList中有两个字段具有相同的值(如1339.5)。为什么?

因为这听起来像是在处理双重数据类型,所以正确的测试方法是设置一个限制,然后测试绝对差异。您还需要考虑处理空值

Const epsilon as double = 0.00001

If Abs(recordsetA.Fields(i).Value - recordsetB.Fields(i).Value) < epsilon Then
'do stuff here
End If
Const epsilon为double=0.00001
如果Abs(recordsetA.Fields(i).Value-recordsetB.Fields(i).Value)
首先,它们是什么值?第二,您考虑过尾随空格的处理吗?尾随空格的字段通常在DB中比较相等,但在C#或其他语言中比较不相等。请澄清:(1)您的意思是“名称出现在stringFieldList中的两个字段,但两个记录集中的值相同”?(2) 你怎么知道它们是一样的?我的意思是,你只是盯着它们看,还是仔细检查了代码中的每个字符,还是什么?@Ben我没有考虑过尾随空格的处理。你能举例说明如何处理这些问题吗@Gareth McCaughan回答第一个问题:是的。关于第二个问题。我刚刚打开表并手动比较了不同的字段。实际上,字段是双倍的。它们不是空的,看起来完全相同。我建议比较Trim(&“”),以避免null出现问题。代码说明:使用For/Each循环和DAO.Field.very类型的变量,这将是更精简的代码。double在高阶小数位数上可能不相等(差异非常小),而在显示的表示中显示为相等。