I have just implemented your add-routine to a test program I already had, and I cannot experience your problem. When I delete an existing record from the middle, it is gone. When I try to add the same information again, it is added no problem to the end of the grid.

You should try to singlestep through your program and see if your loop, which tests if the entry is already there, runs properly and is not somehow fooled.