for j=1 to rs.fields.count
   strsql="update newtable set "+rs.fields(j-1).name+"=case when "+rs.fields(j-1).name+">=0.85 then 1 else 0 end"
   conn.execute(strsql)
next j
'其中一个属性记不清了,就是列的名称的在SQL中处理:
declare @sql varchar(8000)
set @sql='update newtable '
select @sql=@sql+'set '+name+'=case when '+name+'>=0.85 then 1 else 0 end,' from syscolumns where id=object_id('newtable')
set @sql=substring(@sql,1,len(@sql)-1)  
exec(@sql)

解决方案 »

  1.   

    --建议你用connection/command的execute方法直接执行下面的语句进行更新,这样才有效率db.execute "declare @s varchar(8000);set @s='';select @s=@s+',['+name+']=case when ['+name+']>=0.85 then 1 else 0 end' from syscolumns where id=object_id('newtable');set @s=substring(@s,2,8000);exec('update newtable set '+@s)"
      

  2.   

    看过之后才知道我那个搞错了:)
    declare @sql varchar(8000)
    set @sql='update newtable set '
    select @sql=@sql+name+'=case when '+name+'>=0.85 then 1 else 0 end,' from syscolumns where id=object_id('newtable')
    set @sql=substring(@sql,1,len(@sql)-1)  
    exec(@sql)   --:)
      

  3.   

    不要用keyset方式打开记录集。
    rs.Open "select * from newtable", conn, adOpenKeyset, adLockOptimistic
    ==>
    rs.Open "select * from newtable", conn, adOpenDynamic, adLockOptimistic