¿Es un entorno multiusuario?
Puede ser que otra sesión de la aplicación esté tratando de hacer cambios y colisione con tu transacción.
¿Tienes eventos BeforePost/AfterPost BeforeEdit/AfterEdit?
Puede ser que estos eventos abran/cierren/modifiquen cosas que hagan que salte esta exception.
Se me ocurre también que el motor de base de datos trabaje en un hilo separado y esté ocupado realizando el primer Edit/Post, cuando tu ya estás llamando al segundo.
Prueba a poner una pausa entre ellos.
Código Delphi
[-]
FrmBasDat.TablaElementosArbol.Edit;
FrmBasDat.TablaElementosArbol.Post;
Sleep(10);
FrmBasDat.TablaNotas.Edit;
FrmBasDat.TablaNotas.Post;
Sleep(10);
FrmBasDat.TablaTemas.Edit;
FrmBasDat.TablaTemas.Post;
Sleep(10);
FrmBasDat.TablaNotTem.Edit;
FrmBasDat.TablaNotTem.Post;
Sleep(10);