Lo mejor, creo yo, es hacer un select del código para ver si te devuelve algo. Si devuelve algo, quiere decir que ya existe y deberás evitar ese insert.
Para esto, los DataSets tiene los métoso onBeforeInsert/onBeforeUpdate
También puedes poner algo en la base de datos que no permita duplicados. Puede ser:
un PrimaryKey
un UniqueKey
un Trigger que se encargue de verificarlo.
Si de todos modos quieres hacerlo mediante el dataset en memoria:
Primero guarda el código de dónde estás.
Luego deshabilitas el dataset, para que no se refresquen los datos mientras hacer el recorrido
Recorres buscando lo el código
Vuelves a posicionarte en el código que guardaste
Habilitas el dataset
Código Delphi
[-]
with DataSet do
begin
DisableControls;
try
Codigo := DataSet.Codigo;
idRegistro := DataSet.IdRegistro;
First;
while ((not EOF) and (DataSet.IdRegistro <> IdRegistro) and (Codigo <> DataSet.Codigo)) do
Next;
if ((EOF) and (DataSet.IdRegistro <> IdRegistro) and (Codigo <> DataSet.Codigo)) then
Duplicado := False;
First;
while ((not EOF) and (DataSet.IdRegistro <> IdRegistro)) do
Next;
finally
EnableControls;
end;
end
Nota: Si estás insertando o editando, este método no sirve, porque al moverte deberás hacer un Post o un Cancel