你删除的时候,至少要和搜索出来的那条记录有关联吧,在你的delete 中没有体现,所以就是删掉第一条了

解决方案 »

  1.   

    不是没有实质性的回答。是因为你自身的原因sSet.Open(); //打开记录集时默认是执行 select * from table_name删除时你没有定位到你要删除的那条记录,当然是删除第一条记录了,
    解决办法是:
    1、打开记录集时指定查询条件,select * from table_name where ID = 'id'
    2、获取当前记录的员工ID,如果不是要删除的。滚动到下一条。如果是删除当前记录,关闭记录集。
      

  2.   

    直接执行delete from table_name where ID = 'id'
    不就行了。
      

  3.   

    当然可以,他的程序是基于CRecordSet类建立的记录集类。
      

  4.   

    +++++
    正如这位兄台所说,你在打开记录集的时候应该使用SQL语句,根据你的关键字(一般都是关键字唯一性)直接查找到符合条件的记录(一行数据),如果这条记录里确实存在符合你条件的字段,记录集指针会移动到这条记录,这样你才能准确无误的删除一条记录,当然,这里你也可以修改了。
     
      

  5.   

    我们分析一下你的代码吧:
    CStaffSet sSet;
    sSet.Open(); //打开表,一般情况下游标指向的是BOF的,ODBC没怎么用过,好像是指向第一行的
    CWarning dlg;
    if(dlg.DoModal()==IDOK) //确认删出警告框
    {
    TRY
    {
    sSet.Delete(); //删出记录
    后面的不用看了,你应该知道你自己的问题在哪儿了吧