请教你们一个技术问题,我想把rsActual(AdoRecordSet)中的记录添加至rsdest(AdoRecordSet)中,每个名称一个记录,如果名称存在则更新,名称不存在就新增,用以下的方法是否行得通?及是否有更好的方法解决此问题?请指教,多谢!    rsActual.MoveFirst
    While Not rsActual.EOF
    
      rsDest.Find "Name='" & rsActual.Fields("Name").Value & "'"
      
      If rsDest.EOF Then
        rsDest.AddNew
        rsDest.Fields("Name").Value = rsActual.Fields("Name").Value
        rsDest.Fields("GRADE").Value = rsActual.Fields("GRADE").Value
        rsDest.Update
      Else
        rsDest.Fields("GRADE").Value = rsActual.Fields("GRADE").Value
        rsDest.Update
      End If
      
      rsActual.MoveNext
    Wend

解决方案 »

  1.   

    建议用动作查询,效率高。
    cn.execute "update ... where ..."
    cn.execute "insert into .... where ..."
      

  2.   

    呵呵,楼主这样写会很慢的,考虑楼上说的方法,直接使用 Sql 语句,这样只要在服务器上执行,速度会很快的。
      

  3.   

    记录集用上面这种方法是可以的
    不过我更喜欢直接用SQL 语句update ....
    insert into ........
      

  4.   

    我的思路:把rsDest中所有NAME存在与rsActual中的记录都删除,然后把rsActual中的所有记录添加到rsDest中。
    关键写法:
    delete from rsDest where name in "select name from rsActual"
    insert into rsDest (select * from rsActual)
      

  5.   

    同意leswang107(leswang107) 的方法,但把rsDest和rsActual换成表名!
      

  6.   

    是不是Find方法执行之后,如果找到匹配记录游标就会定位在那一行上,如果找不到记录集就会返回EOF,或者有什么其它方法判断是不是找到结果了?
      

  7.   

    FIND 等同于update 语句的where
    找不到不会更新啊!
      

  8.   

    是不是Find方法执行之后,如果找到匹配记录游标就会定位在那一行上,如果找不到记录集就会返回EOF,或者有什么其它方法判断是不是找到结果了?回答以上问题者可得高分,谢谢!