新近写一个vba程序的时分不间歇的出现 “存取器不是参数存取器 ”的错处。嗣后发现至于我等不专业人士,碰到这么的错处还挺e的。下头是综合各种文件理解到的一些货色。
问题多出现在有乘法也许除法或许其它发作高精度小数的时分,这类错处应该是Oracle和vba里的数据精密度不一致罗致的,Oracle里的数据精密度为38位,而微软VB ADO系统的精密度最高唯其如此支持28位的精密度,招致衔接出了问题。
当前两个解决方案:
1. 不用用Oracle客户端自带的 Ole驱动,用微软的 Old驱动。
Provider=MSDAORA 这个应该是微软提供的驱动解决了数据联接的问题。这个步骤大抵解决了大多数问题,但烦劳取决微软自带的驱动不支持Oracle一些效能,例如调用某些储存进程。
2. 直接改查询话语,利用trunc和round函数,将全部也许发作高精度数值的结果积极截断。
select trunc(1.11231234122312, 三) from dual 这个步骤是有效的,但是我觉得很奇怪,上头的截断是用十进制位数,但保留的时分应该是二进制的,十进制的截断代表什么意思呢?