//删除信息
          with adoquery1 do
              begin
                  close;
                  sql.Clear;
                  sql.Add('delete * from 通信簿 where 邮件地址 = '+DBGrid1.Columns[2].FieldName);
                  open;
              end;
为什么这样删除不行?我想选中DBGrid1里的一条信息,再点一个按扭删除它,为什么不行?

解决方案 »

  1.   

    插入、更新、删除要用execsql,只有select用open
      

  2.   

    //删除信息
      with adoquery1 do
      begin
        close;
        sql.Clear;
        sql.Add('delete * from 通信簿 where 邮件地址 = '+DBGrid1.Columns[2].FieldName);
        exec;
        free;
      end;
      

  3.   

    DBGrid1.Columns[2].FieldName是什么意思?是不是dbgrid1里的第3个字段名?
    用楼上删除是实现了,但删除的时候dbgrid1全空了。重新打开程序才知道删掉了。如何在删除后实现dbgrid的刷新呢?
      

  4.   

    删除时出现 Project Project1.exe raised exception class ElistError with message 'List index out of bounds(2)'.Process stopped.Use Step or Run to continue.什么意思?
      

  5.   

    with adoquery1 do
      begin
        close;
        sql.Clear;
        sql.Add('delete * from 通信簿 where 郵件地址 = '
          + QuotedStr(DBGrid1.DataSource.DataSet.FieldByName(
          DBGrid1.Columns[2].FieldName).AsString));
        ExecSQL;
      end;// 保證Columns[2]存在, 即DBGrid有至少有3列
      

  6.   

    直接用
     adoquery1.delete;
    这样不行吗?
      

  7.   

    对啊。。adoquery1.delete;可以啊。。越简单越好啊谢谢大家帮忙。。
      

  8.   

    我不到万不得已,一般不这样删除记录,还是直接delete,然后用缓冲机制更新,免得出错