Hola fwhite, para cancelar el Insert puedes utilizar el procedimiento Abort y el Delete estaría demas.
Código Delphi
[-]
procedure TdmSocios.tbSociosBeforePost(DataSet: TDataSet);
var
vNumSoc: Integer;
begin
vNumSoc := tbSocios.FieldValues['Id_Socio'];
if tbValidaNumSoc.Locate('Id_Socio', vNumSoc, []) then
if tbSocios.State in [dsInsert] then
begin
if MessageDlg('O número de socio ' + IntToStr(vNumSoc) + ' xa está adxudicado.'
+ #13 + #13 + 'Revisa os datos e fai as correccións oportunas', mtConfirmation, [mbCancel], 0)=mrCancel then
Abort;
end;
Saluditos