VBA ADODB从查询中获得更奇妙的值

我在VBA Excel中使用ADODB连接到现有的DBF数据库来parsing信息并生成报告。 我的SQL语句可能不是最好的,但他们似乎工作。 然而,我遇到了一个奇怪的问题与我的查询结果,调查后发现,在一些后方我的查询返回错误的数据。 我原来的SQL语句如下所示:

SELECT nofac, class, branch, Iif(dental = true, pedental + pbdental, NULL) AS prim1, Iif(dental2 = true, pedental + pbdental, NULL) AS prim2, Iif(dental3 = true, pedental + pbdental, NULL) AS prim3, Iif(dental4 = true, pedental + pbdental, NULL) AS prim4, pxdental AS tax, social_ins FROM base.dbf WHERE nofac BETWEEN 123456 AND 123458 

base.dbf包含大约400k条logging,100条匹配nofac = 123456。 PEDENTAL和PBDENTAL持有的费率数量,而牙科虽然dental4表示它的速度types(布尔值)。

我注意到的问题是,prim1 + prim2 + prim3 + prim4的总数大于logging集中所有PEDENTAL + PBDENTAL的总数。 这应该是不可能的。

我重新运行我的SQL语句来查看是什么导致数据损坏,并注意到在某些情况下,约有5%的时间牙齿,牙齿2都会返回true,有时全部4将返回true。

 SELECT nofac, class, branch, dental, dental2, dental3, dental4, social_ins FROM histemp.dbf WHERE nofac = 123456 
  1. 假否为真
  2. 是否为假
  3. 假是真实的

但是,这是我停止了解发生了什么,如果我查看返回多个trueslogging的原始数据,我发现只有一个4值设置为true。 另外,如果我reran我的声明中添加一个辅助where子句隔离损坏的logging,结果是它应该如何,只有一个真实的。

例如,上面例子中的第3行显示为当我查询这一行时:

。 否则为假

有没有人有一个想法,我做错了什么,或发生了什么事?