我用
procedure Tw_main.DBGrid1CellClick(Column: TColumn);
begin
  self.Edt_zt.Text :=self.ADOQuery1.FieldByName('zt' ).AsString;
  
  self.MaskEdit_bjrq.Text :=self.ADOQuery1.FieldByName('bjrq' ).AsString;
  
  self.Mem_ztnr.Text :=self.ADOQuery1.FieldByName('ztnr' ).AsString;
 
  self.lbl_ztbq.Caption :=self.ADOQuery1.FieldByName('zt').AsString;
end;后用ADOTable1.Delete不能删除指定的记录,而删除table1中的排列在最前面的第一条数据,这是为什么呀,大哥们帮帮忙

解决方案 »

  1.   

    DBGrid1CellClick 的事件没有必要的 你完全可以用db的控件来实现的
    然后ADOTable1.Delete肯定会删除当前选中的行
      

  2.   

    我是的用Tedit的,没有用db
    有什么方法可以解决吗?谢谢
      

  3.   

    用SQL语句应该能够实现
    ADOTable1.SQL.Add('delete form table_name where field_name='''+value+'''');
    ExecSQL;
      

  4.   

    ADOTable1与ADOQuery1同时使用的问题,比如ADOQuery1目前指到的记录是第五条,但ADOTable1指到的记录是第一条,你用ADOTable1去DEL,当然不行了。解决办法:1、用ADOQuery1去DEL
    2、用ADOTable1先找到这条记录再DEL另外:我不明白你用DBGrid1CellClick过程在做什么,你想做什么???
    因为DBGrid中就可以显示和删除数据,Edt_zt这些也可直接用DB控件。
    procedure Tw_main.DBGrid1CellClick(Column: TColumn);
    begin
      self.Edt_zt.Text :=self.ADOQuery1.FieldByName('zt' ).AsString;
      
      self.MaskEdit_bjrq.Text :=self.ADOQuery1.FieldByName('bjrq' ).AsString;
      
      self.Mem_ztnr.Text :=self.ADOQuery1.FieldByName('ztnr' ).AsString;
     
      self.lbl_ztbq.Caption :=self.ADOQuery1.FieldByName('zt').AsString;
    end;
      

  5.   

    解决办法:(用其一)1、用ADOQuery1去DEL或2、用ADOTable1先找到这条记录再DEL
      

  6.   

    我用ADOQuery1.Delete;
    也不行,删除不掉
      

  7.   

    用了ADOQuery1.Delete;
    后再用
           ADOQuery1.sql.Clear;
           ADOQuery1.sql.Add('select * from jb');
       ADOQuery1.Open
    数据还是在的吗?
      

  8.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Delete from jb');
    ADOQuery1.prepared;
    ADOQuery1.ExecSql;
    这样删除应该可以了。
      

  9.   

    先找到记录,再删记录。
    adoquery.delete;
      

  10.   

    ADO TABLE只能删除当前记录
    要删除所有记录
    要MOVE NEXT
    或者用ADOQUERY控件可以删除
    楼上的都说过了
      

  11.   

    adotable打开时默认在第一条记录;
    你要先将指针定位到你要删除的记录上;然后再删除;
    譬如用;
     if adoqurey1.locate('fieldname',edit1.text,[]) then 
        adoquery1.delete;或者是用sql语句执行删除
      adoquery1.sql.text := ('delete from yourtable where fieldname1 = :1');
      adoquery1.parameters.parambyname('1').value := edit1.text;