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