Ver Mensaje Individual
  #4  
Antiguo 18-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Cita:
Posteado originalmente por Giniromero
1) Necesito poder cambiar la información acerca del directorio donde se encuentra mi base de datos, sin tener que compilar el programa tras modificar la propiedad DataBaseName del IBDataBase, cada vez que quiera cambiarlo, ¿alguna sugerencia? Hasta ahora lo hacía escribiendo el path en un archivo txt, del que tomaba los datos desde delphi, pero esto me parece poco "elegante".
Como te han comentado, pón el path en un archivo .ini, es practicamente lo mismo que hacias, pero más "elegante"

Cita:

2) En la aplicación, cada usuario tiene que tener su propio login-password, que tienen que escribir al iniciar el programa. Se que interbase te da la posibilidad de tener distintos roles, asignados a los usuarios, con sus correspondientes permisos... y que en el IBDataBase de delphi, con la propiedad LoginPrompt, estando como true, hace que pida el programa el login y la password al conectar la base de datos, pero sólo me funciona bien si introduzco el usuario sysdba, las demás no me las valida.


Yo prefiero crear una tabla en la base de datos, con los usuarios y contraseñas, así como el grupo al que pertenecen. De forma que la conexión a la base de datos la hago con SYSDBA, y una vez conectado compruebo que el usuario que han entrado exista. El tema de los permisos los comprueba el programa, en fución del grupo al que pertenece el usuario le dejas entrar o no en cada formulario.

Cita:

En cualquier caso, necesito llevar un control de lo que cada usuario va haciendo en el programa. Hasta ahora, lo que tenía era una tabla con los distintos usuarios. En base a esta tabla, los usuarios se validaban, o no, para abrir el programa, y según los datos que en ella aparecían, así podían acceder o no a determinadas tablas. El login activo se guardaba, cada vez que se hacía una transacción, en un campo, que para ello tienen las tablas. ¿hay alguna opción que me guarde un registro de lo que hacen los distintos usuarios, utilizando los users-password definidos en interbase?¿alguna forma de guardar el usuario de interbase con el que se ha entrado en la base de datos, como valor para un campo de las tablas?


La variable USER devuelve una cadena con el nombre del usuario validado (normalmente SYSDBA). Por lo que puedes hacer un Trigger en las tablas, y cada vez que haya una modificación guardar en una tabla de Registro, la fecha-hora, la tabla modificada y el usuario.

Además en Firebird 1, tienes las variable CURRENT_USER (igual a USER), CURRENT_ROLE y CURRENT_CONNECTION. Esta ultima es un entero que identifica la conexión actual. De forma que si en lugar de utilizar distintos usuarios, siempre entras con SYSDBA y utilizas una tabla de usuarios para validar la entrada, puedes guardar en la tabla de usuarios la CURRENT_CONNECTION por la que han entrado. De esta forma, en un trigger puedes saber el usuario que ha hecho el cambio a partir de la CURRENT_CONNECTION.

Cita:

3) ¿hay alguna manera de que cuando el loginprompt esté en true, además de user y password, se muestre el campo ROLE ?


Que yo sepa no. Dudo mucho que sea posible.

Cita:

4) Los permisos "reference" de interbase, ¿que función tienen?
No lo se.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita