当计算(Mid(a, 4, 2)) - 2时要么VB会用变体形变量来存放临时结果,这样进行减法时变体形会自动被转成整形再相减就不会出错了要么VB在碰到字符串内容是数字且有算术运算时会自动转换类形!
而SQL就不会这么好心了:)

解决方案 »

  1.   

    在VB中,函数mid()的返回结果的数据类型是Variant(变体)类型,因此“mid(a,4,2)-2”和“val(mid(a,4,2))-2”的结果都是一样;如果要返回字符型结果可以用函数mid$()。而SQL查询语句中,函数mid()的返回结果的数据类型是char(字符)类型,也没有函数mid$()。
      

  2.   

    楼上,你这句怎么不对。SQL查询语句中好象是用char(字符)类型进行操作的。
      

  3.   

    VB don't check for it, just convert automaticly
      

  4.   

    两个字符串连接可用 "&" 或 "+",但当两个连接的部分一个位string类型(其值表现为数值形式),另一部分为数值型时,按数值型计算
    在程序中设置断点,在立即窗口中得到这样的结果
    ? typename(a)
    String
    ? typename(mid(a,4,2))
    String
    ? typename(Mid(a, 4, 2) - 2)
    Double