Algunas cosas a precisar:
1) Aqui
Código Delphi
[-]Query1.FieldByName('Id').AsInteger := Table1.RecordCount+1;
Haces referencia a Table1.RecordCount+1...
2) En la creacion de la tabla haces referencia a
Código Delphi
[-]If not Table2.Exists then
!!Talvez en el punto 1 debe hacer referencia a Table2.RecordCount+1!!... No lo se.
3) Cuando insertas es obvio que Table1.RecordCount+1 no se incrementa el RecordCount de Table1...
Motivo que arroja el error que indicas.
Te aconsejaria verificar si en cada insercion el Table1.RecordCount cambia.
Saludos