.......
Str1 = "update phoneinfo set projectname='" & TxtProjectID.Text & "',outdate={fn now()} where city='" & TxtCity.Text & "' and ID in (Select Top " & TxtTal.Text & " ID from phoneinfo)"
Conn.Execute (Str1)
.......
注:TxtTal.Text 是可输入的要更新的记录条数;ID为表phoneinfo的主键;TxtCity.text为可输入的文本框的值。
我的目的是能过输入条件来控制更新表中的记录数,而不是更新所有的记录。
现在的问题是,执行没有错误提示,但表里的记录不会更新.这句怎么啦?

解决方案 »

  1.   

    照理说可以的.
    你用
    msgbox strl 看看,然后到SQL 查询分析器里面执行一下,试试可否?
      

  2.   

    把那些条件拿出来用SELECT 来查询一下看看是不是有记录
      

  3.   

    我用msgbox str1查了没问题,到SQL查询分析器中执行了,只能对排在表中开始的记录更新,选后面的记录就不行了。比如输入对表前面10条记录更新,就没问题,如果这10条记录是表中第10条后的记录,就不会更新了!
      

  4.   

    是啊。你的sql语句不就是这么写的嘛
    ID in (Select Top " & TxtTal.Text & " ID from phoneinfo)
    如果TxtTal.Text的值是10,那么不就是对前10条记录进行更新嘛
      

  5.   

    在SQL查询器中,只要加上ID in (Select Top " & TxtTal.Text & " ID from phoneinfo)"这一段后,就能执行,但没结果!
      

  6.   

    bladeinside(云淡风清),你好,但是我在ID...前还有一个where...条件呀,应该是where条件的前10条记录吧!
      

  7.   

    那你最好这么写吧。
    Str1 = "update phoneinfo set projectname='" & TxtProjectID.Text & "',outdate={fn now()} where ID in (Select Top " & TxtTal.Text & " ID from phoneinfo where city='" & TxtCity.Text & "' )"
      

  8.   

    对, 你的where 放到 子查询中去。