我用access2003开发一个系统,语言是vb,但是在访问sql语句时发生一奇怪现象:代码如下:
   sql = "SELECT * FROM SK_STS_WK WHERE STNO = 2;"
   Set STS = db.OpenRecordset(sql, dbOpenDynaset)问题:
如果where条件写为:stno = 2;
运行时就会提示:抽出条件数据类型不一致
但是如果改为:stno = '2',运行就正常了但是stno在数据库中是number类型的阿?
太奇怪了,哪位大侠知道啊?

解决方案 »

  1.   

    道理没有错,字符字段,才需要用引号,建议lz用ado方法
      

  2.   

    sql = "SELECT * FROM SK_STS_WK WHERE STNO = 2" 
      Set STS = db.OpenRecordset(sql, dbOpenDynaset) 
      

  3.   


    我用access2003,用dao测试没有问题,你的的确怪
      

  4.   

    数据库中是NULL,NULL != 2 
      

  5.   

    再次确认STNO字段数据类型究竟是哪种类型型,Long,Byte,Float,Double,Integer,GUID这些都是数值型,你仔细看看究竟是哪种,是不是自己看错了,字段类型不是字段里存储的数据类型,不是说你往里写的都是数字那个字段就是Number型。
      

  6.   

    试一试我这个,这个是写好的函数,你需要带入Sql语句即可。
      

  7.   

    http://download.csdn.net/source/1498324
      

  8.   

    我在ACCESS数据库中运行和你的选择语句类似的语句可以运行哦,如SELECT *
    FROM tk where pri=2;其中pri就是数字类型的,是不是你安装的文件有问题啊?要不你在ACCESS数据库中运行下你的语句试试,如果可以的话,那可能就是你编程软件的问题了。
      

  9.   

    数据库中该字段是number(10),数据库是oralce10g
      

  10.   


    是Oracle、Access不分,还是来逗你们玩!
      

  11.   

    VB能用ACCESS2003数据库吗?只支持ACCESS97、2000
      

  12.   

    是在access中开发的FORM框架,数据库是oracle10g
      

  13.   

    你好牛呵!在ACCESS数据库中利用VB操作oracle10g
      

  14.   

    是不是用了链接表,将该链接表重建一次试试。又:用微软的 Access 去访问 Oracle,你怎么选的方案,不知道同行是冤家吗?
      

  15.   

    如果你在stno里存的数在-2147483648至2147483647之间的话,建议你还是用Integer型替代把,反正也没有小数部分。