我的程序在win98下运行没有问题,在XP下有一处提示“十进制运算错误”,不知道怎么回事?
查看原代码,问题在这一段(将记录添加至Access数据库,用ADO):
If Option1(0).Value = True Then(这一处运行无错误,可以添加记录)
    rc1!单位 = "每100克"
    y = x(17) / 100
Else(这里会提示“十进制运算错误”,并且记录不会添加)
    y = Combo1.ListIndex + 1
    rc1!单位 = "每份(" & Round(x(17) / y * 100) / 100 & "克)"
End If

解决方案 »

  1.   

    改为
    rc1!单位 = "每份(" & CStr(Round(x(17) / y * 100) / 100) & "克)"另外,y是否会等于0????除以0是会溢出的
      

  2.   

    单位 = "每份(" & CStr(Round(x(17) / y * 100) / 100) & "克)"
    在前面设置一下陷阱.
      

  3.   

    rc1!单位 = "每份(" & (Round(x(17) / y * 100) / 100) & "克)"用扩号扩起来(Round(x(17) / y * 100) / 100) rc1!单位" 字段是否是字符型?
      

  4.   

    这个错误发生在我的一个名为《糖尿病饮食》的程序里,下载地址:http://www.csdn.net/cnshare/soft/16/16927.shtm
    程序安装后打开,点菜单的新建-> 制作食物,食物选择完毕后点完成按钮,将所选食物给出一定量后,点添加入我的食物表按钮,会出现“添加入我的食物表”窗体,输入食物名称后,选“每份”,选择份数后点确定,在XP下就会出现前述错误,98下没问题。
    以上只是在同事家里的一台装XP的机器上试过,因为身边再无XP机子,诸位所说的办法想调试一下也难,麻烦各位高手,谁装了XP,不妨下载试试,看是否有这个错误出现。多谢了!
      

  5.   

    把y,x(..)声明的类型打出来看看,    y = Combo1.ListIndex + 1
        if y<>0 then
           rc1!单位 = "每份(" & CStr(Round(x(17) / y * 100) / 100) & "克)"
        end if如果你用 & 就要保证各个&的部分都是字符串,要不就用“+”
      

  6.   

    y = Combo1.ListIndex + 1如果你没选择任何Combo1下的项,或Combo1的项数为0,它的值就是y=-1+1=0;我认为和XP无关的,总不能那么简单的数学运算都不兼容吧?