Ver Mensaje Individual
  #3  
Antiguo 08-03-2008
antrahxg antrahxg is offline
Miembro
 
Registrado: ene 2007
Posts: 10
Reputación: 0
antrahxg Va por buen camino
Si, probe con DataSet.Cancel y otras sugerencias que se mostraban en este foro pero, la instruccion cancel solo cancela cualquier modificacion que se le hubiera hecho al registro, con la propiedad CacheUpdates a true, me duplica el registro y con la porpiedad a False me salta la excepcion, ahora estoy intentado capturar la excepcion en el evento OnUpdateError pero no lo he logrado.


--------------------
Bueno, ya he dado con la solucion, le hacia falta algo ademas de la instruccion DataSet.Cancel, Solo use el evento OnBeforePost y ha quedado de la siguiente manera.

Código Delphi [-]
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin

       if dataSet.State = dsInsert then 
          if Buscar(DataSet.FieldByName('Nombre').AsString) then begin
               Showmessage('El codigo esta duplicado');
               DataSet.Cancel;
               abort;
          end
          else
          if DataSet.FieldByName('Nombre').AsString='' then begin
               DataSet.Cancel;
               abort;
          end;
end;

El abort hace la gran diferencia ya que se elimina el nuevo registro, ademas hay que comprobar el estado de la tabla porque si se elimina el
if dataSet.State = dsInsert then manda el mensaje de "Registro Duplicado" cuando se edita un registro.

Saludos

Última edición por antrahxg fecha: 08-03-2008 a las 12:03:06. Razón: Solucion encontrada
Responder Con Cita