procedure Tbianjifm.BitBtn2Click(Sender: TObject);
var
  jilu: String;  //这个变量表示当前的记录
begin
jilu:=ADODataSet1.FieldByName('ccbh_id').AsString;
ADODataSet1.Close;
ADODataSet1.CommandText:='DELETE FROM s_zxx WHERE ccbh_id = jilu';
ADODataSet1.Post;
end;

解决方案 »

  1.   

    好像删除不是用post,是用delete吧~~
      

  2.   

    而且不是adodataset,是用adoquery吧?
    我不明白你为什么要将adodataset先关闭,应该是adoquery吧~~~
    这是我做的程序,你参考一下。
    if messagedlg('请注意,是否要真的删除记录?',mtconfirmation,[mbyes,mbno],0)=mryes then
      adodataset1.Delete ;
      

  3.   

    对,直接用数据集的delete方法就可以了
      

  4.   

    是我没有讲清楚!我现在补充一下,我为什么要这样做,如果只是单纯的一条记录我是这样可以的:
    if MessageDlg('你确认要删除吗?', mtWarning, [mbOK, mbCancel], 0) = mrok    then
        ADODataSet1.Delete;
    我什么要用SQL语句呢?我想在删除这条记录后,把另外一张表的数据也一起删除,因为这个是个主记录,另外一张表有好几条记录是跟着他的,有了他才有另外一张表的记录,大家肯定很明白我的意思了!所以我不能ADOTADASET.delete来,要用SQL语句把有关系的两个数据集联系起来!为了好理解,我说明如下:
    表A:
        出厂编号    名称        装配日期
        1111        BMW760      2003-12-10
        2222        BMWX5       2003-12-15
    表B:
       出厂编号     操作内容    操作者    操作工时
       1111          油漆        张三      5
       1111          绑金        李四      3
       2222          油漆        张三      4
       2222          绑金        李四      7
    我如果删除了表A的  
      1111        BMW760      2003-12-10
    这个记录,
    那么表B的
       1111          油漆        张三      5
       1111          绑金        李四      3
    也要一起删除
    因为我在写的时候用事物同时写进去的谁可以帮助我把删除SQL语句写出,我自己加个事物就行了
      

  5.   

    procedure Tbianjifm.BitBtn2Click(Sender: TObject);
    var
      jilu: String;  //这个变量表示当前的记录
    begin
    jilu:=adoquery1.FieldByName('ccbh_id').AsString;
    adoquery.Close;
    adoquery.sql.Text:='DELETE FROM s_zxx WHERE ccbh_id = jilu';
    adoquery.ExecSQL;
    end;
    这种方法不好
    用pinkpiglm(透明) 的吧
      

  6.   

    你的代碼應改成這樣才正確
    procedure Tbianjifm.BitBtn2Click(Sender: TObject);
    var
      jilu: String;  //这个变量表示当前的记录
    begin
    jilu:=ADODataSet1.FieldByName('ccbh_id').AsString;
    ADODataSet1.Close;
    ADODataSet1.CommandText:='DELETE FROM s_zxx WHERE ccbh_id = :jilu';
    ADODataSet1.Parameters.ParamByName('jilu').Value:=jilu;
    ADODataSet1.ExecSQL;
    end;
      

  7.   

    用ADOQuery吧procedure Tbianjifm.BitBtn2Click(Sender: TObject);
    var
      jilu: String;  //这个变量表示当前的记录
    begin
      jilu := ADOQuery1.FieldByName('ccbh_id').AsString;
      ADOQuery1.Close;
      ADOQuery1.SQL.Text := 'DELETE FROM s_zxx WHERE ccbh_id=' + QuotedStr(jilu);
      ADOQuery1.ExecSQL;
    end;
      

  8.   

    删除了表A的  
      1111        BMW760      2003-12-10
    这个记录,
    应在
    删除表B的
       1111          油漆        张三      5
       1111          绑金        李四      3
    之后处理
      

  9.   

    用级联删除
    create proceduer delete_cp
    @cpbh varchar(20)
    as 
    begin
    delete a where cpbh=@cpbh
    delete b where cpbh=@cpbh
    end
    go