procedure TForm1.Button2Click(Sender: TObject);
begin
with Query1 do begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO detfactfinal (Numdetfact, Numfact, Cod_art, Cantidad)'); <-- Te falta un ")"
SQL.Add('(SELECT Numdetfact, Numfact, Cod_art, Cantidad FROM detfactura)'); <-- Puedes omitir los paréntesis
ExecSQL;
Close;
SQL.Clear;
SQL.Add('DELETE detfactura');
ExecSQL;
end;
end;