Ocultación según grupo

Como puedo ocultar el texto de un formulario según el grupo al que pertezca el usuario. Supongo que en las propiedades de ocultación tengo que poner alguna fórmula tal que así:
!@IsMember(@UserName;"[E10 Central]") pero no me va bien...
¿Has hecho alguna vez algo parecido?
¿Cómo lo has hecho?
Respuesta
1
Para esto yo uso roles.
En el control de acceso de la bd, añade el grupo (en vez de cada miembro del grupo).
A ese grupo, en el control de acceso, dale un rol, por ejemplo "[JEFES]" y el texto que quieres ocultar es en función de los roles que tiene:
@if( @ismember( "[JEFES]"; @userroles); 1; 0)
Ojo, si en el control de acceso esta un usuario y un grupo al que pertenece, SOLO se aplica la del propio usuario, por lo que deberías asignarle también los roles al usuario.
¿OK?
El problema esta en que no puedo usar roles... :( ya que hay demasiados grupos y no es posible crear un rol para cada grupo...
Yo le daría una vuelta a usar roles, tal vez con grupos de grupos o así.
Pero si no te convence, te cuento algo para saber:
a) Los usuarios que pertenecen a un grupo
b) los grupos a los que pertenece un usuario
Se trata de usar @dblookup a la base de datos NAMES.NSF del serviodr. Allí hay unas vistas de grupos:
Supiongamos que el NAMES del servidor esta en:
s := "SERVIDOR";
b := "NAMES.NSF
sb := s:b;
Para saber si un usuario PEPE pertenece al grupo JEFES:
a:= @dblookup( ""; sb ; "($VIMGroups)"; "JEFES"; 3);
@ismember( @username; a)
Esta función devuelve 1 si el usuario pertenece al grupo JEFES y 0 si no pertenece.
Puedes usarlo en fórmulas de ocultado.
Lamentablemente en el names.nsf no existe una vista que nos permita saber, con un nombre, los grupos a los que pertenece. Deberías de hacerla. Copia la vista "($VIMGROUPS)" a otra, llamala "MIEMBROS", pon en la primera columna el campo "MEMBERS", ordenado y "mostrar múltiples valores como entradas separadas" y en la segunda
@Name([Abbreviate]; @Subset(ListName; 1))
ahora, una formula como esta te dara la lista de grupos a los que pertenece ese usuario:
a:= @dblookup( ""; sb ; "MEMBERS"; @name([cn]; @username; 2);
a
Espero que esto te sirva de ayuda para resolver tu problema.
Si necesitas más ayuda dímelo.
Me puedes en contrar en el messenger: [email protected]
Suerte

1 respuesta más de otro experto

Respuesta
1
Haz el @Ismember comparando @UserNamesList ( da como resultado el nombre del usuario actual, los grupos al que pertenece y los roles ) con "Grupo A":"Grupo B"... o algún @DbColumn o @DbLookup que hagas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas