JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Lun 18 Abr, 2011 10:39 pm Asunto: Usuarios Activos en IB??? |
|
|
Esta línea siempre falla siempre me dice que no está activo el usuario, por qué?
Necesito saber antes de conectar a un usuario si éste usuario ya está activo (conectado al BDD) en otro terminal.
Utilizo Interbase 2009 y C++ Builder 2010
ALGUNA SUGERENCIA?
Gracias de antemano
| Código: |
//Intento conectar con IBDatabase2 que tiene asignado al administrador SYSDBA ,para comprueba Usuarios y Roles
if(IBDatabase2->Tag > 2)
IBDatabase2->Open();
if(IBDatabase2->Connected)
{
if(fV->SV->DatSetPCNumeroTerminal_int > 1)
{
String N = CrDat(L"òöðù") + String(fV->SV->DatSetPCNumeroTerminal_int);//Desde TPV_2 hasta TPV_25
IBSecurityService->ServerName = fV->SV->DatSetPCNombreServidor_Ncr;
IBSecurityService->Active = true;
bool Usuario_Existe = false;
IBSecurityService->DisplayUsers();
for(int I = 0; I <IBSecurityService>UserInfoCount; I++)
{
if(IBSecurityService->UserInfo[I]->UserName == N)
{
//Comprobar si el usuario está activo por otro Terminal
if(IBSecurityService->UserInfo[I]->ActiveUser)//->->->->->->->->->->->->->->Esta Linea siempre falla
{
fV->MenDialogo("El Usuario de Interbase: " + IBSecurityService->UserInfo[I]->UserName
+ "\nEstá Activo en otro Terminal, saldrá del Programa.", L"!");
IBDatabase2->Close();
Application->Terminate();// Salir del programa con Error
exit(EXIT_SUCCESS);
}
else
Usuario_Existe = true;
}
}
if(!Usuario_Existe)//Si no Existe el Usuario, Añadir Usuario
{
IBSecurityService->UserName = N;
IBSecurityService->Password = fV->SV->CrIbUserKey;
IBSecurityService->UserID = fV->SV->DatSetPCNumeroTerminal_int;
IBSecurityService->AddUser();//Tengo que comprobar que el usuario no existe
IBSQLExec->Database = IBDatabase2;//Este objeto será el encargado de asignar los ROLES a los Usuarios
IBSQLExec->Transaction = IBTransaction2;
//Asignar ROL a usuario desde el administrador SYSDBA y abrir base de datos con el usuario PDAxx
MDatos->IBSQLExec->Close();
MDatos->IBSQLExec->SQL->Clear();
MDatos->IBSQLExec->SQL->Add(L"GRANT TPVBARMAN TO " + N + " WITH ADMIN OPTION;");
MDatos->IBSQLExec->ExecQuery();
MDatos->IBTransaction2->CommitRetaining();
MDatos->IBSQLExec->Close();
IBSQLExec->Database = IBDatabase;//Cuando Desconecto el IBDatabase2 lo asigno otra vez al IBDatabase(1)
IBSQLExec->Transaction = IBTransaction;
}
IBSecurityService->Active = false;
}
IBDatabase2->Connected = false;
}
//******************************************************************
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|