ConditionWhere

publicité
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
Téléchargement