名为allocationinfo表中有记录,其中有一个名为housenumber的字段,用adoquery进行删除记录时,
我是如下操作的
 with adoquery1 do
 begin
    close;
    sql.Clear;
    sql.Add('delete  from allocationinfo where housenumber='''+housenumber+'''');
    ExecSQL;
end;
执行之后,总是有一条为相应housenumber的记录无法删除,请大家指点一下阿。

解决方案 »

  1.   

    with adoquery1 do
     begin
        close;
        sql.Clear;
        sql.Add('delete  from allocationinfo where housenumber='''+housenumber+'''');
        ExecSQL;
    end;
    上面的第二个housenumber我想应该是个具体的变量值,在这里只是字段名,不能这样使用的.
    sql.Add('delete  from allocationinfo where housenumber='''+strTemp+'''');说不定就对了
      

  2.   

    是啊,housenumber是一个变量的名阿,并且我已经给他赋值了
      

  3.   

    若housenumber字段为数字类型则应改为:
    sql.Add('delete from allocationinfo where housenumber='+strTemp);
      

  4.   

    不是数字的,是char 10型的,谢谢大家阿
      

  5.   

    with adoquery1 do
     begin
        close;
        sql.Clear;
        sql.Add('delete  from allocationinfo where housenumber=:housenumber);
        parameters.parambyname('housenumber').value='你的值';
        ExecSQL;
    end;
      

  6.   

    单纯从代码上来看没有什么问题,应该是数据库方面的原因你把这句sql语句显示出来
    Edit1.text:='delete  from allocationinfo where housenumber='''+housenumber+''''然后拿到数据库客户端执行一下看是否有同样的情况
      

  7.   

    把SQL语句跟踪出来直接执行一下就知道了
      

  8.   

    with adoquery1 do
     begin
        close;
        sql.Clear;
        sql.Add('delete  from allocationinfo where RTrim(LTrim(housenumber))='''+housenumber+'''');
        ExecSQL;
    end;试试
      

  9.   

    用参数。
     zxf_feng(阿日) 
    with adoquery1 do
     begin
        close;
        sql.Clear;
        sql.Add('delete  from allocationinfo where housenumber=:housenumber);
        parameters.parambyname('housenumber').value='你的值';
        ExecSQL;
    end;
      

  10.   

    with adoquery1 do
     begin
        close;
        sql.Clear;
        sql.Add('delete  from allocationinfo where housenumber=:housenumber'); //少了个'
        parameters.parambyname('housenumber').value='你的值';
        ExecSQL;
    end;
      

  11.   

    parameters.parambyname('housenumber').value='你的值';
    parameters.parambyname('housenumber').value:='你的值';
      

  12.   

    应该是char(10)类型的问题,你把数据库里的字段类型改成varchar(10)再试试
    因为char这种类型在字符长度不到10的情况下,会用空格补足10个的长度的
      

  13.   

    adoquery1 做查询操作了吗 如果做查询后在做删除 可能会有问题 以前在连SYSBASE数据库的时候发生过这种情况 可以 在加个adoquery2 试试
      

  14.   

    应该是数据库的问题,两种方案
    1、将数据类型修改为varchar(10),因为char(10)会以空格补齐
    2、命令行改为
    sql.Add('delete  from allocationinfo where RTRIM(housenumber)='+QuotedStr(housenumber));
      

  15.   

    首先 DELETE的SQL语句是没问题
    既然仍然存在一条记录没有删除
    那么这条记录信息不符合WHERE中的条件
    也就是这条记录中的字段值与所给参数不等
      

  16.   

    把 where = 改成
    where like 试试就知道了
      

  17.   

    可能是你的housenumber中有空格什么的,用LIKE删除吧