Vuestra sugerencia de usar TIBSecurityService, como no podía ser de otra forma, funciona a la perfección pero estoy teniendo otro problema.
Estoy migrando los datos de una base de datos Paradox. En concreto esta tabla:
Usuario --- Clave
MARIA ----- 6814
GEMA ------ GEMITA
ENRIQUE --- SISI
PEÑI ------ 45005
FEDERICO -- FM
Para ello estoy usando este código:
Código:
for (; !tTabla->Eof; tTabla->Next())
{
SecurityService->Active = false;
SecurityService->UserName = QuitaAcento(UpperCase(tTabla->FieldByName("Nombre")->AsString));
SecurityService->Password = QuitaAcento(UpperCase(tTabla->FieldByName("Clave")->AsString));
SecurityService->Active = true;
SecurityService->AddUser();
Application->ProcessMessages();
}
QuitaAcento es una función que hace eso: eliminar acentos y eñes. Esto lo hago al principio, al crear la base de datos, y es la primera tabla que cargo y antes de hacer nada. Sin embargo al dar de alta al tercero de los usarios (otras veces con el segundo) me da un error de violación de integridad:
Lo curioso es que si hago una consulta a las tablas del sistema
Código PHP:
SELECT DISTINCT RDB$USER FROM RDB$USER_PRIVILEGES ORDER BY RDB$USER
No me aparecen ninguno de los tres usuarios que ya han pasado por el bucle y si aparece ese error al menos debería mostrarse precisamente el que lo produce.