Hola, como es la estrucutra de la tabla Usuario, te lo pregunto por que en el insert tienes estos campos :
usuario
departamento
id_rol
centro
pero para el update tienes estos campos:
usuario
departamento
id_rol
centro
id_usuario
Es decir, tienes un campo mas en el Update que es id_usuario (creo que faltaria este en el Insert), dime de que tipo es id_usuario; te comento si es de tipo SERIAL debes incluirlo en el Insert y por defecto (creo!) debes enviarle un cero (0), entonces la instruccion quedaria de la sgte forma:
Insert into usuario
(id_usuario, usuario,departamento,id_rol,centro)
values (0, :sle_usuario.text, :sle_departamento.text, :sle_rol.text, :ddlb_centros.text)
using LOG;
Por favor verifica esto.
Otro punto es que despues del INSERT y antes del IF coloques 2 messagebox
para que te muestre el valor que lleva la variable LOG
//Muestra el codigo de error
MessageBox("Nro. error", String(LOG.SqlCode))
//Muestra el mensaje de error
MessageBox("Msg error", LOG.SqlErrText )
Me cuentas, pero creo estoy casi seguro que en la sentencia del Insert falta un campo.