Interesante Al. Como dices, no es recomendable recorrer el dataset en uno de sus eventos. Como no da mayores detalles no se me ocurrió que quizá tuviera enlazadas ambas tablas. De hecho, me uno a la invitación de exponer más claramente el código y el contexto. De entrada, la condición
Código Delphi
[-]
if not tabla2.locate('codigo', '005', []) then
no parece ser correcta, lo que me sugiere que no nos está poniendo el código realmente usado.
// Saludos