第一句
adoquery1.sql.add('update daa074 set skqk=''kasjhd'' where daa074.elsyds between daa091.jdds2 and daa091.jdds2');
第二句
adoquery1.sql.add('update daa074 set skqk=''kasjhd'' where daa074.elsyds between 1 and 1000');如果我象第一句 那样写就出错 
如果象第二句 那样写 就可以更新成功 为什么?应该怎么写??????daa074,daa091 是dbf表

解决方案 »

  1.   

    adoquery1.sql.add('update daa074 set skqk=''kasjhd'' where daa074.elsyds between daa091.jdds2 and daa091.jdds2');and 前后不都是daa091.jdds2
      

  2.   

    BETWEEN begin_expression AND end_expressionbetween里要求是一个值,而不能为字段或别的什么东西   而且begin_expression 和 end_expression类型要一致
      

  3.   

    错误信息是什么?
    daa091.jdds1,daa091.jdds2是什么型的
      

  4.   

    错误信息:
    [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword'他俩的类型是一样的啊
    在 vf表里 都是 数值型的 
      

  5.   

    adoquery1.sql.add('update daa074 set skqk=(SELECT ''kasjhd'' from daa074 a,daa091 b  where a.elsyds between b.jdds1 and b.jdds2)');
    要是这样更新 会出现这样的错误
    '[Microsoft][ODBC Visual FoxPro Driver]Function name is missing )'
      

  6.   

    BETWEEN begin_expression AND end_expression不是BETWEEN  AND 的错误, 是你这句SQL语句错了  你可以换成  where  a>1 and a<100这样的试下,VF没用过  
    daa091.jdds1,daa091.jdds2  应该是字段吧,不能是字段的,而应该是明确的一个值
      

  7.   

    daa091.jdds1,daa091.jdds2
    是字段 where  a>1 and a<100 这样也不行啊 我想完成的是这样的
    我在daa074里添加一个字段skqk然后更新值
    在 daa074里有个字段elsyds  如果在daa091.jdds1,daa091.jdds2这俩个字段之间 skqk的值就写I,不在就为空,
    因为我要一条一条的记录比较 不能固定范围 所以要 取 那俩个字段了 不这样实现还有更好的方法
    帮帮我吧  
      

  8.   

    如果在daa091.jdds1,daa091.jdds2这俩个字段之间 skqk的值就写I这样可以的,不过你先要确定是daa091表的哪一条记录 然后 把daa091.jdds1,daa091.jdds2换成: select jdds1  from daa091 where .... 
         select jdds2  from daa091 where ....
      

  9.   

    between x and y,x,y皆是常数。 
    adoquery1.sql.add('
    update daa074 set skqk=''i'' 
    from daa074 a
    where daa074.elsyds >=(select daa091.jdds1 from daa074 where id = a.id) and daa074.elsyds <=(select daa091.jdds2 from daa074 where id = a.id)
    ');
    其中的ID字段换成该表的关键字字段