Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > Firebird e Interbase
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 16/01/2018
Angel.Matilla's Avatar
Angel.Matilla Angel.Matilla is offline
Miembro
 
Join Date: Jan 2007
Location: Toledo - España
Posts: 1,418
Poder: 21
Angel.Matilla Va por buen camino
¿Existe un usuario en FB?

¿Cómo puedo comprobar si un usuario está creado en FB? Para crearlo, modificarlo o borrarlo no tengo problema pero no sé como hacer para comprob ar su existencia. He visto en la ayuda de BCB 6 el método DisplayUser pero con este código:
Code:
AnsiString Nombre, cAux;
SecurityService->DisplayUser(Nombre);
cAux = SecurityService->UserInfo[0]->UserName;
al ejecutarse DisplayUSer me da este error:
Quote:
invalid service handle
Evidentemente Nombre es donde está guardado el UserName que estoy buscando ¿Alguna sugerencia?
Reply With Quote
  #2  
Old 16/01/2018
Angel.Matilla's Avatar
Angel.Matilla Angel.Matilla is offline
Miembro
 
Join Date: Jan 2007
Location: Toledo - España
Posts: 1,418
Poder: 21
Angel.Matilla Va por buen camino

¡No he dicho nada! Se me había olvidado activar SecurityService.
Reply With Quote
  #3  
Old 19/01/2018
mRoman's Avatar
mRoman mRoman is offline
Miembro
 
Join Date: Nov 2003
Posts: 646
Poder: 23
mRoman Va por buen camino
Deberias agregar el codigo completo, para los demas que andamos buscando como hacer eso q tu ya hiciste

Saludos
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Reply With Quote
  #4  
Old 19/01/2018
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Para verificar la existencia de un usuario, también se puede consultar a Firebird directamente:
PHP Code:
bool userExists(TIBQuery *QY, const AnsiString& userName)
{
  
QY->Close();
  
QY->SQL->Clear();
  
QY->SQL->Add("SELECT DISTINCT RDB$USER");
  
QY->SQL->Add("FROM RDB$USER_PRIVILEGES");
  
QY->SQL->Add("WHERE RDB$USER = :USER");
  
QY->ParamByName("USER")->AsString = userName;
  
QY->Open();
  
bool found = ! QY->IsEmpty();
  
QY->Close();
  return 
found;
}


// ejemplo del uso
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if ( 
userExists(IBQuery1, "sysdba") ) 
     ...
} 
Un ejemplo del uso de TIBSecurityService:
PHP Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
TIBSecurityService *ss = IBSecurityService1;

  
ss->SecurityAction = ActionDisplayUser;
  
ss->LoginPrompt    = false;
  
ss->Params->Add("user_name=sysdba");
  
ss->Params->Add("password=masterkey");
  
ss->Active = true;
  
__try {
    
ss->DisplayUser(ss->UserName);
    
Memo1->Clear();
    
Memo1->Lines->Add("Name: "+ss->UserInfo[0]->UserName);
    
Memo1->Lines->Add("First Name: "+ss->UserInfo[0]->FirstName);
    
Memo1->Lines->Add("Middle Name: "+ss->UserInfo[0]->MiddleName);
    
Memo1->Lines->Add("Last Name: "+ss->UserInfo[0]->LastName);
    
Memo1->Lines->Add("GroupID: "+ IntToStr(ss->UserInfo[0]->GroupID));
    
Memo1->Lines->Add("UserID: "+IntToStr(ss->UserInfo[0]->UserID));
  }
  catch (const 
Exception& e) {
    
ShowMessage(e.Message);
  }
} 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Reply With Quote
  #5  
Old 12/09/2020
Angel.Matilla's Avatar
Angel.Matilla Angel.Matilla is offline
Miembro
 
Join Date: Jan 2007
Location: Toledo - España
Posts: 1,418
Poder: 21
Angel.Matilla Va por buen camino
Estaba corrigiendo un fallo que había en un proyecto en el tema de dar de alta o modificar usuarios y me he encontrado con un problema. Usando el código que me sugirió ecfisa en su día resulta que en la base de datos del proyecto ese usuario no existe (al ejecutar el query no me devuelve nada) pero sí está dado de alta para otras bases de datos que tengo instaladas y me da error

¿Cómo puedo evitar este error?
Reply With Quote
  #6  
Old 12/09/2020
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,702
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pues no dando de alta otro repetido
Reply With Quote
  #7  
Old 14/09/2020
Angel.Matilla's Avatar
Angel.Matilla Angel.Matilla is offline
Miembro
 
Join Date: Jan 2007
Location: Toledo - España
Posts: 1,418
Poder: 21
Angel.Matilla Va por buen camino
Quote:
Originally Posted by Casimiro Notevi View Post
Pues no dando de alta otro repetido
¡Muy gracioso!

Tenía un error de base en el manejo de FB: Yo suponía que los usuarios se daban de alta en el motor a nivel de cada una de las bases de datos y no a nivel del motor en conjunto. Al final lo he resuelto de la manera más tonta:
Code:
Query->Close();
Query->SQL->Text = "SELECT DISTINCT RDB$USER FROM RDB$USER_PRIVILEGES WHERE RDB$USER = :Nombre";
Query->ParamByName("Nombre")->AsString = Nombre->Text;
Query->Open();

SecurityService->UserName = Nombre->Text;
SecurityService->Password = Clave->Text;
SecurityService->Active = true;
if (Query->IsEmpty())
{
     try
     {
          SecurityService->AddUser();
     }
     catch(Exception &Exc)
     {
          SecurityService->Active = true;
          SecurityService->ModifyUser();
     }
}
else
     SecurityService->ModifyUser();
SecurityService->Active = false;
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
forma mas eficiente de saber si existe un usuario en firebird? erickperez6 Firebird e Interbase 0 18/06/2014 05:29
IBX ¿como asignar usuario,base de datos, nombre de usuario por codigo? JXJ Firebird e Interbase 4 09/05/2010 18:45
SQL Server dice usuario ya existe Alexander Conexión con bases de datos 2 09/07/2007 23:34
Duda sobre sistema ulti-usuario y mono-usuario simon Varios 1 07/06/2004 18:35


All times are GMT +2. The time now is 12:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi