El problema es debido a que el try except no esta en el lugar adecuado, tal como esta puesto, la excepcion salta al except saliendo del bucle, no te aparecera ningun mensaje en la pantalla pero acabara la funcion en este punto. El Except es como un goto, desde la linea que de error se salta al except y se continua por ahi, saliendose del bucle:
Tendras que hacer algo parecido a:
Código:
with tabla2 do begin
First;
while not eof do begin
try insertaarticulo('tabla1')
except end;
Next;
end;
end;
Añado que no se aconseja nunca poner un except vacio que ignore completamente todas las excepciones, aunque esto ira bien para que funcione
el codigo como quieres, si se produjesen otros errores por otras causas (por ejemplo que la base de datos este corrompida o cualquier otra cosa),
no te enterarias y tampoco tendrias ningun pista para saber porque no funciona el codigo.
Asi que es preferible en el except asegurarse de que la excepcion que esta dando es la de key violation para continuar , y si es otro tipo de error,
apuntarlo en algun sitio, o mostrar un mensaje de error al usuario o lo que sea para saber que esta pasando algo extraño.
Saludos
Saludos