Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD9] Actions sur les FAA

7 réponses
Avatar
Eric Laurent
Bonjour,
Je souhaite activer/désactiver les FAA (excel,word et xml) sur
l'ensemble des tables de mon application en fonction de l'autorisation
de l'utilisateur (Boooleen FaaAutorise).
J'ai pensé à un moyen qui consiste à appeler une procédure globale
(ActionFAA) à l'initialisation de chaque table et liste du type
suivant:

ActionFAA(MaFenêtre..Nom+"."+MoiMême..Nom)
.
.
.
fonction ActionFAA(NomDeLaTable)

si FaaAutorise alors
ExécuteFAA(NomDeLaTable,faaTableVersExcel)
ExécuteFAA(NomDeLaTable,faaTableVersWord)
ExécuteFAA(NomDeLaTable,faaTableVersXML)
sinon
DésactiveFAA(NomDeLaTable,faaTableVersExcel)
DésactiveFAA(NomDeLaTable,faaTableVersWord)
DésactiveFAA(NomDeLaTable,faaTableVersXML)
fin

Ce qui me gène, c'est qu'il s'agit d'une très grosse application et que
de passer l'ensemble de mes fenêtres, récupérer le nom de la fenetre et
du champ table puis écrire l'appel à la fonction est une opération
longue.


Quelqu'un connait-il un moyen plus simple ?

Merci pour vos suggestions.

--
Eric Laurent
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)

7 réponses

Avatar
Pascal F
Eric Laurent a présenté l'énoncé suivant :
Bonjour,
Je souhaite activer/désactiver les FAA (excel,word et xml) sur l'ensemble des tables de mon application en fonction de
l'autorisation de l'utilisateur (Boooleen FaaAutorise).
J'ai pensé à un moyen qui consiste à appeler une procédure globale (ActionFAA) à l'initialisation de chaque table et liste du
type suivant:

ActionFAA(MaFenêtre..Nom+"."+MoiMême..Nom)
.
.
.
fonction ActionFAA(NomDeLaTable)

si FaaAutorise alors
ExécuteFAA(NomDeLaTable,faaTableVersExcel)
ExécuteFAA(NomDeLaTable,faaTableVersWord)
ExécuteFAA(NomDeLaTable,faaTableVersXML)
sinon
DésactiveFAA(NomDeLaTable,faaTableVersExcel)
DésactiveFAA(NomDeLaTable,faaTableVersWord)
DésactiveFAA(NomDeLaTable,faaTableVersXML)
fin

Ce qui me gène, c'est qu'il s'agit d'une très grosse application et que de passer l'ensemble de mes fenêtres, récupérer le nom
de la fenetre et du champ table puis écrire l'appel à la fonction est une opération longue.


Quelqu'un connait-il un moyen plus simple ?

Merci pour vos suggestions.



Je ferai une procédure globale, appelée dans l'init de la fenetre (pas la déclaration).
Dans la fonction énumération des objets de la fenetre. Si l'objet est une table, tu appelle la fonction ActionAA.
Attention de faire ta fonction récursive sur les onglets et autres conteneurs.

A tester.

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Eric Laurent
Pascal F a utilisé son clavier pour écrire :

Je ferai une procédure globale, appelée dans l'init de la fenetre (pas la
déclaration).
Dans la fonction énumération des objets de la fenetre. Si l'objet est une
table, tu appelle la fonction ActionAA.
Attention de faire ta fonction récursive sur les onglets et autres
conteneurs.

A tester.


Merci, ton idée est interressante.
Il y a quand même un souci:
Comment savoir si un champ est une table ou une liste (équivalent de
Typevar pour les champs) ?


--
Eric Laurent

(enlever nospam.)
Avatar
Pascal F
Eric Laurent a formulé la demande :
Pascal F a utilisé son clavier pour écrire :

Je ferai une procédure globale, appelée dans l'init de la fenetre (pas la déclaration).
Dans la fonction énumération des objets de la fenetre. Si l'objet est une table, tu appelle la fonction ActionAA.
Attention de faire ta fonction récursive sur les onglets et autres conteneurs.

A tester.


Merci, ton idée est interressante.
Il y a quand même un souci:
Comment savoir si un champ est une table ou une liste (équivalent de Typevar pour les champs) ?



SI {ChampCourant,indChamp}..type=typTable alors
ActionFAA({ChampCourant,indChamp}..NomComplet)
FIN

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Eric Laurent
Pascal F a exposé le 12/01/2006 :

SI {ChampCourant,indChamp}..type=typTable alors
ActionFAA({ChampCourant,indChamp}..NomComplet)
FIN



Impeccable !
Un grand merci à toi Pascal.

--
Eric Laurent

(enlever nospam.)
Avatar
Pascal F
Eric Laurent avait écrit le 12/01/2006 :
Pascal F a exposé le 12/01/2006 :

SI {ChampCourant,indChamp}..type=typTable alors
ActionFAA({ChampCourant,indChamp}..NomComplet)
FIN



Impeccable !
Un grand merci à toi Pascal.



Je pense que je vais m'en servir aussi :oÞ

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Eric Laurent
Le 12/01/2006, Pascal F a supposé :

Je pense que je vais m'en servir aussi :oÞ



Alors voici la fonction toute faite:

Appel de la procédure dans l'initialisation de la fenêtre:

ActionsurFAA(FenEnExécution() )
.
.
PROCEDURE ActionsurFAA(NomDeLaFenetre)

indC est entier
FNomChamp est une chaîne
TypeDeChamp est un entier

indC=1; FNomChamp = EnumèreChamp(NomDeLaFenetre, indC)
TANTQUE FNomChamp<>""

TypeDeChamp={NomDeLaFenetre+"."+FNomChamp}..Type
SI TypeDeChamp=typTable OU TypeDeChamp=typListe ALORS
SI FaaAutorise ALORS
ExécuteFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersExcel)
ExécuteFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersWord)
ExécuteFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersXML)
SINON
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersExcel)
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersWord)
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersXML)
FIN
FIN

indC++; FNomChamp = EnumèreChamp(NomDeLaFenetre, indC)
FIN


--
Eric Laurent

(enlever nospam.)
Avatar
Eric Laurent
Eric Laurent vient de nous annoncer :
ATTENTION !!
Il y a un problème avec la fonction ExécuteFAA.
En effet, cette fonction exécute le code de la FAA, elle n'active pas le menu.
La procédure devient donc:

PROCEDURE ActionsurFAA(NomDeLaFenetre)

indC est entier
FNomChamp est une chaîne
TypeDeChamp est un entier

indC=1; FNomChamp = EnumèreChamp(NomDeLaFenetre, indC)
TANTQUE FNomChamp<>""
TypeDeChamp={NomDeLaFenetre+"."+FNomChamp}..Type
SI TypeDeChamp=typTable OU TypeDeChamp=typListe ALORS
SI PAS DroitFaa ALORS
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersExcel)
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersWord)
DésactiveFAA({NomDeLaFenetre+"."+FNomChamp},faaTableVersXML)
FIN
FIN
indC++; FNomChamp = EnumèreChamp(NomDeLaFenetre, indC)
FIN



--
Eric Laurent

(enlever nospam.)