IsMemeber

Hola, necesito comprobar si si un determinado usuario es miembro de unos grupos. Si es así ocultar o desocultar un botón.
La fórmula que utilizo es la siguiente
grupos_devueltos:=@GetProfileField("Valores";"Grupos");
(supongamos que me devuelve: G1, G2, G3)
@IsMember(@UserNamesList;grupos_devueltos) (esto me devuelve 0)
Lo que pasa es que no obtengo el resultado esperado, ya que el usuario si que está en uno de los grupos que hay en la variable grupos_devueltos.
¿Estoy aplicando bien la fórmula? Gracias

1 Respuesta

Respuesta
1
Prueba esto:
@ismember( @name([cn]; @username); grupos_devueltos)
Te devuelve 1 (numérico) si el nombre dle usuario esta en esosgrupos.
Siempre que el campo "GRUPOS" del formulario "VALORES" tenga en sus propiedades activado "Admite múltiples valores". No vale con que al meterlos los separes por comas.
Hola, gracias por contestar, he probado tu solución y no funciona, aunque si te digo la verdad, veo lógico que no funcione, me explico...
La función "@name([cn]; @username)" me devuelve: "Pedro Mir"
I la variable "grupos_devueltos "contiene:
"Grupo E10 Central, Usuarios Notes Oficinas"
Es decir la cadena "Pedro Mir" no está en la cadena "Grupo E10 Central, Usuarios Notes Oficinas", por lo tanto veo lógico que me devuelva 0. A lo mejor soy yo que no acabo de entender el funcionamiento de la función @IsMemeber...
Gracias de todas maneras.
Me parece entender que en tus PARÁMETROS de VALORES tienes nombres de Grupos que están definidos en el names.nsf de tu servidor.
La funciona @ismember NO busca automáticamente en los grupos del names.
En Grupos_Devueltos tienes la lista de grupos. Ahora quieres saber si el usuario activo es miembro de esos grupos:
a := @dblookup( "":""; @subset( @dbname; 1):"NAMES.NSF"; "($VIMGroups)"; grupos_devuelros; "Members");
b:= @ismember( @name([cn]; @username); a);
La linea 1 busca la lista de grupos que hay en tu variable grupos_devueltos en la vista "($VIMGroups)" de tu names, y te devuelve la lista de todos los miembros de esos grupos.
Esta linea te puede dar error si alguno de los grupos que tienes en grupos_devueltos no existe en el names. Hay una forma de evitarlo, pero es larga de explicar aquí. Si quieres me preguntas y te lo cuento.
Ahora bien, lamentablementeesta solución no te vale para poner como fórmula de ocultación ya que estas no admiten @dblookup.
Para conseguirlo, te recomiendo crearte un campo al principio del documento, calculado al visualizar, que tiene la fórmula que te he pegado, y en la fórmula de ocultación, ponle simplemente el nombre de ese campo (estará oculto cuando ese campo es 0).
COmprendo que te he metido una chapa larga.
Si tienes messenger, me puedes encontrar en el como [email protected]
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas