Ver Mensaje Individual
  #8  
Antiguo 23-06-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Reputación: 22
CHiCoLiTa Va por buen camino
El rollback lo hacia, porque si el proceso se para por clave duplicada y la ejecucion del programa termina, cuando vuelven a empezar todos los registros ya estarian duplicados porque los copio en la primera pasada.

Y el abort, para evitar que me muestre el mensaje de error, y mostrar el que yo quiera, no los 2

Al hacer lo que me comento jachguate, el programa sigue parando al encontrar un duplicado

Este es el codigo que tengo puesto ahora mismo para hacer las pruebas con lo que me dijeron, por si veis algo anormal

Código Delphi [-]
procedure TDataModule2.TCt_totalPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
var
   Texto : string;
begin
   if (E is EDatabaseError) then
     if Pos('PRIMARY KEY', UpperCase(E.Message)) <> 0 then
     begin
        Texto := 'Duplicado el registro con ID: ' + QEasy.FieldByName('ID_CT').AsString;
        Application.MessageBox(PChar(Texto), 'Registro duplicado',mb_Ok+MB_ICONEXCLAMATION);
        TCT_TOTAL.cancel;
     end;
end;

QEasy es la tabla origen
TCT_TOTAL es la talba destino
Conexion con ADO y las 2 tablas estan en diferentes bases de datos, por eso no hago el insert

De este modo es como copio los datos de una tabla a otra

Código Delphi [-]
           while not QEasy.Eof do
           begin
              TCT_TOTAL.Append;
              for i := 0 to QEasy.Fields.Count - 1 do
                  TCT_TOTAL.Fields[i].Value := QEasy.Fields[i].Value;
              TCT_TOTAL.Post;
              QEasy.Next;
           end;

Última edición por CHiCoLiTa fecha: 23-06-2004 a las 16:29:37.
Responder Con Cita