Hola. Si hay acceso multiusuario, el select max(id) no te garantiza que te devuelva el registro insertado por vos... es el último registro confirmado en la BD.
Me imagino que por autonumerico te referis a que estas usando un generador para obtener el ID, en un trigger BeforeInsert. El inconveniente de esto es precisamente no saber el ID de vuelta en la aplicación. Es mejor obtener el ID antes de lanzar la sentencia al servidor en tu propia aplicación.
Esto lo podes hacer fácilmente con un StoredProcedure que simplemente llame a gen_id para tu generador y devuelva el valor generado. Luego usas ese ID para insertar tanto el maestro como sus detalles
me explique??
Ahora, sinceramente, la segunda pregunta no la entendí. Si es una aplicación cliente/servidor, no veo porque utilizar un archivo de texto de por medio... y mucho menos entiendo lo que queres hacer...
Hasta luego.
