Limitation des tuples affichés par une fenêtre « LOV » Notre action consiste à rendre dynamique l’affichage des tuples d’une fenêtre « LOV » et par la même occasion, restreindre si nécessaire, le choix en fonction de l’utilisateur connecté. Situation : Des personnes sont affectées à zéro ou une école et possèdent une et une seule fonction. Par rapport à la personne connectée, les valeurs proposées par la fenêtre « LOV » concernant les écoles à disposition, devront être différentes. L’objectif visé par les règles de gestion est le suivant : Si la personne connectée est le responsable administratif de la base de données, tous les tuples devront être affichés dans la fenêtre. Par contre, si la connexion est faite par la secrétaire d’une école, seul le tuple représentant son école devra être disponible. Pour ce faire, il existe parmi les paramètres de définition d’un composant de module « Table usage » la possibilité de définir une clause Where. D:\582821918.doc Deux possibilités sont alors offertes par « Type of condition » : Query et Validation. La première influe sur la table « PERSONNE » et n’affichera que les personnes qui possèdent les critères définis dans la condition Where-Query. Exemple : WHERE ecoles.mnemo =’ESNIG ‘ ne modifie pas le contenu de la fenêtre « LOV » alors que dans la « record list », sont affichées uniquement les personnes qui sont affectées à l’ESNIG. La deuxième option influe sur la table « ECOLES » et ne met à disposition dans la fenêtre « LOV » que le tuple demandé. Exemple : WHERE ecoles.mnemo =’ESNIG ‘ seul le mnémo ‘ESNIG’ est à disposition dans la fenêtre « LOV » pour l’insertion ou la modification, alors que dans la « record list » toutes les personnes, indépendamment de leur école, sont affichées. Nous définissons ci-dessous une clause Where-Validation qui prend en compte la règle de gestion définie. mnemo IN((SELECT ecoles.mnemo FROM personnes, ecoles, fonctions WHERE USER=UPPER(personnes.mnemo) AND personnes.eco_numero = ecoles.numero AND 'ADMIN_LOCAL' IN (SELECT granted_role FROM SYS.DBA_ROLE_PRIVS WHERE GRANTEE =USER)) UNION Vérifie les droits de la personne dans la base de données. (Voir (SELECT ecoles.mnemo FROM ecoles feuillet « gestion des autorisations WHERE 'ADMIN_GENERAL' IN (SELECT granted_role FROM de manipulation de données dans un module ») SYS.DBA_ROLE_PRIVS WHERE GRANTEE =USER)) ) D:\582821918.doc Le résultat obtenu est le suivant : Connexion de la personne responsable de la base de données D:\582821918.doc Connexion de la secrétaire de Sierre