通过ADOQUERY 删除VFP表中的一条记录。
删除操作后再用VFP软件打开表发行只是对记录做了一个标记,并没有删除该记录。
怎样才能彻底删除记录啊?谢谢!下面是我的删除代码:
kcadoq.Active:=true;
kcadoq.Delete;
kcadoq.Requery();
showmessage('删除成功!');

解决方案 »

  1.   

    delete 
    后,要记得Post
    kcadoq.Delete; 
    kcadoq.Post; 这样试试
      

  2.   

      
      sDeleteSql := 'Delete......';
      try
        FADOConnect.Execute(sDeleteSql);
      except
       
      end;这样也试下。
      

  3.   

    你有没有用过控件DBNavigator中得删除功能?
      

  4.   

    跟组件没有关系,VFP就是这样子,如果要彻底删除,VFP有个收缩命令 pack 调用一下就可以。
      

  5.   

    在DELPHI中怎样使用 PACK? 谢谢!
      

  6.   

    sDeleteSql := 'Pack';
      try
        FADOConnect.Execute(sDeleteSql);
      except
     
      end; 
    sDeleteSql := 'zap';
      try
        FADOConnect.Execute(sDeleteSql);
      except
     
      end; 这样试下,
    试前要备份数据啊,呵呵。
      

  7.   

    之前也碰到过类似的问题,不过删不了
    在Delphi程序中真正删除记录,需要调用BDE函数,函数名为DbiPackTable,     
      函数原型为:     
      function   DbiPackTable(hDb : hDBIDb;hCursor : hDBICur;pszTableName : Char;pszDriverType   :   PChar;   bRegenIdxs   :   Bool   ):   DBIResult;   
      ----其中,hDb为数据库TDatabse的句柄,hCursor为数据表TTable的句柄,pszTableName为要删除记录的数据表   名称,pszDriverType为要删除记录的数据表的类型,bRegenIdxs表示是否在删除记录后自动更新索引文件.     
      ----   在   上   面   前   四   个   参   数   中,hDb   不   能   为NULL   .hCursor、pszTableName、pszDriverType   可   以   为   NULL,   但   必   须   提   供   足   够   的   信   息   来   标   识   数   据   表   的   文   件   名   称   和   类   型,   当hCursor   不   为   空   时,   pszTableName   和pszDriverType   可   以   为NULL;   当pszTableName   为   数   据   表   的   路   径   和   文   件   名   时,hCursor   和pszDriverType   可   以   为NULL   .     
      ----   值   得   注   意   的   是,   在   删   除   记   录   时,   如   果   用Table   来   实   现,   则Table   必   须   以Exclusive=True   的   方   式   打   开   .   下   面   就   是   一   个   典   型   的   例   子   .     
      首先,应在uses语句加上DbiTypes,DbiProcs,DbiErrs.   
      {   Pack一个DBF数据表,DbfTable包含了数据表的信息   }   
      function   PackDbfTable(   DbfTable   :   TTable   )   :   boolean;   
      var   
      errResult   :   DBIResult;   
      begin   
      if   not   DbfTable.Exclusive   then     
      {如果不是以独占方式,操作失败   }   
      begin   
      result   :=   false;   
      exit;   
      end;   
      {进行删除操作   }   
      errResult   :=   DbiPackTable(   DbfTable.dbHandle,   
      DbfTable.handle,   NIL,   NIL,   true   );   
        
      {根据返回结果,返回成功与否的标志   }   
      if   errResult   =   DBIERR_NONE   then   
      {没有错误,操作成功   }   
      result   :=   true   
      else{没有错误,操作失败   }   
      result   :=   false;   
      end;