procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
 Sindex:=adoquery1.fieldbyname('id').Asstring;
end;procedure TForm2.Button3Click(Sender: TObject);
begin
  
  if ADOQuery1.IsEmpty   then     // 
     Begin
      Showmessage('当前没有要删除的记录');
      exit;
     End;
     If MessageDlg('您确定要删除该条的记录吗?', mtConfirmation, [mbYes, mbNo], 0)=mrNo Then  exit;
      with adoquery1 do
   begin
     close;
     SQL.Clear;
     sql.Text:='delete from tb where id ='''+sindex+ '''';
     ExecSQL;
   end;
    with adoquery1 do
  begin
    sql.clear;
    Close;
    SQL.Text:='select * from tb ';
    Open;
  end;       end;
删除数据总是出错,id 是ACCESS中 tb 表的主键,自动编号  错误提示标准表达式中数据类型不匹配!!

解决方案 »

  1.   

    procedure TForm2.DBGrid1CellClick(Column: TColumn);
    begin
     Sindex:=adoquery1.fieldbyname('id').Asstring;
    end;procedure TForm2.Button3Click(Sender: TObject);
    begin
      
      if ADOQuery1.IsEmpty   then     // 
         Begin
          Showmessage('当前没有要删除的记录');
          exit;
         End;
         If MessageDlg('您确定要删除该条的记录吗?', mtConfirmation, [mbYes, mbNo], 0)=mrNo Then  exit;
          with adoquery1 do
       begin
         close;
         SQL.Clear;
         //sql.Text:='delete from tb where id ='''+sindex+ '''';//这里不要那多引号
         //改为
         sql.Text:='delete from tb where id ='+sindex+ ';
         ExecSQL;
       end;
        with adoquery1 do
      begin
        sql.clear;
        Close;
        SQL.Text:='select * from tb ';
        Open;
      end;       end;
      

  2.   

    sql.Text:=Format('delete from tb where id = %d', [sindex]);
      

  3.   

    id不是字符,不用加引号,也就是说sql应该这样写
    delete from tb where id =103    //用103代替
    而不是
    delete from tb where id =‘103’
      

  4.   

    sql.Text:=Format('delete from tb where id = %s', [sindex]);
      

  5.   

    harabi(齐桓公) 说的比较比较清楚,你也可以这样写: 
         sql.Text:='delete from tb where id ='+strtoint(sindex)+ ';
      
      

  6.   

    'delete from tb where id ='+sindex+ ';
      

  7.   

    不知道数据类型的情况下最简单的就是用参数:
    SQL.Text:='delete from tb where id=:id';
    Parameters.ParamValues['id']:=xxx;
    ......
      

  8.   

    改为sql.Text:='delete from tb where id ='+sindex+ '';