Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Crear usuarios en FB 2.5 (https://www.clubdelphi.com/foros/showthread.php?t=91738)

Angel.Matilla 11-04-2017 10:07:46

Crear usuarios en FB 2.5
 
La instrucción
Cita:

CREATE USER NombreUsuario PASSWORD ‘Contraseña’ [FIRSTNAME ‘PrimerNombre’] [MIDDLENAME ‘SegundoNombre’] [LASTNAME ‘Apellido’];
¿cómo habría de ejecutarse en BCB 6? Me refiero a si con un TIBQuery, un TIBStroredProc...

Angel.Matilla 11-04-2017 13:16:09

Me respondo yo mismo. Se puede hacer con un TIBQuery pero no se pueden usar parámetros. Es decir:
Código:

Query1->Close();
Query1->SQL->Text = "CREATE USER Usuario PASSWORD :Clave";
Query1->ParamByName("Clave")->AsString = Clave;
Query1->ExecSQL();

da error. Hay que meter los valores directamente en la cadena:
Código:

Query1->Close();
Query1->SQL->Text = "CREATE USER Usuario PASSWORD '" + Clave + "'";
Query1->ExecSQL();


ecfisa 11-04-2017 17:55:09

Hola.

Solo para agregar que si estas usando los componentes IBX, también tenes la opción de usar TIBSecurityService.

Ejemplo:
Código PHP:

...
{
  
TIBSecurityService *ss static_cast<TIBSecurityService*>(IBSecurityService1);

  
ss->LoginPrompt false;
  
ss->Params->Clear();
  
ss->Params->Add("user_name=sysdba");
  
ss->Params->Add("password=masterkey");

  
ss->UserName    "PEPE";
  
ss->Password    "1234";
  
ss->FirstName   "JOSE";
  
ss->MiddleName  "MARIO";
  
ss->LastName    "PEREZ";

  
ss->Active      true;
  
ss->AddUser();
  
ss->Active      false;


Saludos :)

Angel.Matilla 12-04-2017 10:30:45

Cita:

Empezado por ecfisa (Mensaje 515459)
Hola.

Solo para agregar que si estas usando los componentes IBX, también tenes la opción de usar TIBSecurityService.

Muchas gracias por la respuesta pero no tengo instalados los copmponentes IBX. Prefiero no andar instalando paquetes externos salvo que sea imprescindible porque luego em dan muchos problemas y en concreto estos no logré instalarlos nunca.

Casimiro Notevi 12-04-2017 10:33:26

Los IBX son los que vienen con Delphi :)
¿No vienen en BCB?

Angel.Matilla 12-04-2017 11:12:47

Cita:

Empezado por Casimiro Notevi (Mensaje 515481)
Los IBX son los que vienen con Delphi :)
¿No vienen en BCB?

:o:o:o:o
¿Pues no estaba pensando en una paleta externa?

ecfisa 12-04-2017 13:37:35

Hola.

Si son los mismos que menciona Casimiro. Pero no te preocupes :) muchos no relacionan los componentes con el nombre IBX.

Te lo sugerí por que recuerdo que usaste el TIBRestoreService que está en la misma pestaña.

Saludos :)

Angel.Matilla 12-04-2017 17:20:40

Lo dicho: Después de 20 años usando Borland no darme cuenta ¡Para sonrojarse! Gracias a los dos.

Angel.Matilla 12-04-2017 17:49:47

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.

Angel.Matilla 12-04-2017 17:59:23

No he dicho nada.:(:(:(:(:(:(


La franja horaria es GMT +2. Ahora son las 15:17:09.

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