¿En qué momento llamas a este código?
¿Puede ser que lo estés llamando más de una vez?
Sólo viendo esto es difícil (por no decir imposible) que este código grabe dos registros iguales a no se que se llame dos veces (al menos así lo veo yo).
Si
utilizas TAG's cuando escribas código delphi los mensajes se leerán mejor.