table does not support this operation because it is not uniquely indexed和''is not a valid floating point value这两个错误,怎么解决,还有为什么我的修改生效,只执行 insert不执行delete
修改生效的程序
begin
   //Btn_ok.Enabled:=false;
 if Clicksign=2 then//先将其删除
 begin
   With Pro_DM.Qry_qc do
    begin
     Close;
     Sql.Clear ;
     Sql.Text:='Delete from QCFLOW where Check_no= :cno';
     Params[0].AsString:=Tedtno;
     Prepare;
     ExecSql;
     Tedtno:='';
    end;
   end;
 For RI:=1 to SGrid_flow.RowCount-1 do
  begin
  if (SGrid_flow.Cells[0,RI]<>'') and (SGrid_flow.Cells[1,RI]<>'') then
    begin
 With Pro_DM.Qry_qc do
   begin
     Close;
     Sql.Clear ;
     Sql.Text:='Insert into QCFLOW '
               +' Values(:Qcflow_no,:Qcflow_name,:Check_level,:Check_no,:Check_name,:Check_per,:Treatment_no,:Treatment_name,'
               +':Treatment_mode,:Treatmentchk,:re)';
     Parambyname('Qcflow_no').AsString:=Trim(Edt_no.Text);
     Parambyname('Qcflow_name').AsString:=Edt_name.Text;
     Parambyname('re').AsString:=Memo_re.Lines.Text;
     With SGrid_flow do
     begin
     Parambyname('Check_level').AsString:=Cells[0,RI];
     Parambyname('Check_no').AsString:=Cells[1,RI];
     Parambyname('Check_name').AsString:=Cells[2,RI];
     Parambyname('Check_per').AsFloat:=Strtofloat(Trim(Cells[3,RI]));
     Parambyname('Treatment_no').AsString:=Cells[4,RI];
     Parambyname('Treatment_name').AsString:=Cells[5,RI];
     Parambyname('Treatment_mode').AsString:=Cells[6,RI];
     Parambyname('Treatmentchk').AsString:=Cells[7,RI];
     end;
   Prepare;
   Try
   ExecSql;
   Except
    application.MessageBox('保存数据记录时发生错误,请检查记录!','记录错误',mb_iconwarning);
    end;
   end;
  end;
  end;