He revisado tu código que adjuntas.
En :
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule2.Master.Append;
end;
lo que estás haciendo es un Append, y junto con el Generador que tienes puesto estás incremento ese generador en 1. Pero no estás realizando el POST correspondiente, que es la razón principal del error que te está dando.
Al pulsar el Button3 y ejecutar :
Código Delphi
[-]procedure TDataModule2.MasterAfterPost(DataSet: TDataSet);
begin
Lineas.Post;
IBDatabase.ApplyUpdates([Master, Lineas]);
IBTransaction.CommitRetaining;
Lineas.DataSource := dsMaster;
end;
me dá error en la primera línea ya que Lineas no está en Modo Edit y por lo tanto no se puede realizar un Post de Líneas.
O eso es al menos lo que me parece a mi.
La cuestión es que te has liado mucho en tu código cuando es más fácil de lo que te imaginas.
Haciendo algunos cambios en tu código como eliminar todo el código de MasterAfterPost a mi me funciona, aunque mi manera de programar será difente a la tuya.
Todo el error del Foreign Key viene porque te tienes que ASEGURAR que antes de que ejecutes el Post de la tabla LINEAS, tiene que estar hecho el POST de MASTER.
Espero haberte ayudado un poco.