OVH Cloud OVH Cloud

Compilation dynamique

5 réponses
Avatar
J-M des Grottes
Bonsoir,

La question tordue du soir.

Je crée dynamiquement une fenêtre en répartissant et en créant des
champs (via champclone ) sur base d'un fichier. il y a plusieurs champs
Tout va bien.
Certains champs sont le résultat du calcul d'autres champs et je
voulais via la compilation dynamique, réaliser ces calculs à la sortie
des champs impliquer dans le calcul.
Les champs étant créer dynamiquement, je ne peux pas préencoder la
formule dans leut traitement.

Exemple: sai_calcul est le champ calculé. il contient le résulat de
SAI-SAISIE1/2. Comment compliler dynamiquement, A LA SORTIE de
SAI-SAISIE1 le calcul sai_calcul=SAI-SAISIE1/2 ???

J'ai beau me creuser la tête, je ne vois pas.

Merci

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique

5 réponses

Avatar
marcel
salut Jean-Marin !

On 8-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:

Bonsoir,

La question tordue du soir.

Je crée dynamiquement une fenêtre en répartissant et en créant des
champs (via champclone ) sur base d'un fichier. il y a plusieurs champs
Tout va bien.
Certains champs sont le résultat du calcul d'autres champs et je
voulais via la compilation dynamique, réaliser ces calculs à la sortie
des champs impliquer dans le calcul.
Les champs étant créer dynamiquement, je ne peux pas préencoder la
formule dans leut traitement.

Exemple: sai_calcul est le champ calculé. il contient le résulat de
SAI-SAISIE1/2. Comment compliler dynamiquement, A LA SORTIE de
SAI-SAISIE1 le calcul sai_calcul=SAI-SAISIE1/2 ???

J'ai beau me creuser la tête, je ne vois pas.

Merci




Il faut créer une chaîne contenant précisément ce que tu as écrit :
"sai_calcul = SAI-SAISIE1/2"
et la compiler ...
En pratique :
local
lsChaine_A_Compiler est une chaine
lsResultatCompilation est une chaine
lvResultatProc est un Variant

lsChaine_A_Compiler = "sai_calcul =sai-saisie1/2"
lsResultatCompilation = compile("MAPROC",lsChaine_A_Compiler)
selon lsResultatCompilation
cas ""
lvResultatProc = ""
executetraitement("MAPROC",trtprocedure)
cas "ERR"
lvResultatProc = erreurinfo(errcomplet)
autre cas
lvResultatProc = cResultatCompile
fin
si pas lvResultatProc ~= "" alors
erreur(lvResultatProc)
fin

et voilà...

Quand te revoyons nous à nos réunions locales ?

A Bientôt j'espère !

--
Marcel Berman
Animateur de la section belge de WinDAsso
Participez aux Wind'Rêveries 2006
http://www.windasso.org/cgi-bin/gespage.exe?exec=stat_w2006Inscr
Avatar
J-M des Grottes
avait écrit le 8/11/2006 :
salut Jean-Marin !

On 8-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:

Bonsoir,

La question tordue du soir.

Je crée dynamiquement une fenêtre en répartissant et en créant des
champs (via champclone ) sur base d'un fichier. il y a plusieurs champs
Tout va bien.
Certains champs sont le résultat du calcul d'autres champs et je
voulais via la compilation dynamique, réaliser ces calculs à la sortie
des champs impliquer dans le calcul.
Les champs étant créer dynamiquement, je ne peux pas préencoder la
formule dans leut traitement.

Exemple: sai_calcul est le champ calculé. il contient le résulat de
SAI-SAISIE1/2. Comment compliler dynamiquement, A LA SORTIE de
SAI-SAISIE1 le calcul sai_calcul=SAI-SAISIE1/2 ???

J'ai beau me creuser la tête, je ne vois pas.

Merci




Il faut créer une chaîne contenant précisément ce que tu as écrit :
"sai_calcul = SAI-SAISIE1/2"
et la compiler ...
En pratique :
local
lsChaine_A_Compiler est une chaine
lsResultatCompilation est une chaine
lvResultatProc est un Variant

lsChaine_A_Compiler = "sai_calcul =sai-saisie1/2"
lsResultatCompilation = compile("MAPROC",lsChaine_A_Compiler)
selon lsResultatCompilation
cas ""
lvResultatProc = ""
executetraitement("MAPROC",trtprocedure)
cas "ERR"
lvResultatProc = erreurinfo(errcomplet)
autre cas
lvResultatProc = cResultatCompile
fin
si pas lvResultatProc ~= "" alors
erreur(lvResultatProc)
fin

et voilà...

Quand te revoyons nous à nos réunions locales ?

A Bientôt j'espère !



Salut,

Marci mais si je veux que cette procédure ne soit exécutée QUE à la
sortie du champ sai-saisie1 ? Comment faire comprendre de manière
dynamique qu'elle doit ne s'activer qu'à ce moment-là...?

Pour ta 2ème question: bientôt mais je vais suivre des cours à PAris...

Je t'expliquerai...

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
Avatar
marcel
salut !

On 9-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:

Salut,

Marci mais si je veux que cette procédure ne soit exécutée QUE à la
sortie du champ sai-saisie1 ? Comment faire comprendre de manière
dynamique qu'elle doit ne s'activer qu'à ce moment-là...?



Simple !
Le champ qui sert de modèle aux champs clonés doit appeller une fonction
locale à la fenêtre.
Par exemple :
Code de sortie du champ :
si pas MesControlesdesortie(moimeme..nom) alors
reprisesaisie(moimeme)
fin

Et tu crées une fonction locale
Procedure MesControlesDeSortie(sChamp est une chaine = "")
local
bRetour est un booleen = vrai
// Tu ajoutes ici les variables nécessaire à la compilation dyanmique

selon sChamp
cas ""
// On renvoie Vrai
bRetour = Vrai
cas "LeChampATester"

// Le code de validation dans une chaine à compiler
// La procedure compilée devrait renvoyer Vrai ou Faux
// compilation dynamique ...
bRetour = executetraitement("MaProc",trtprocedure)
autre cas
bRetour = faux
fin
renvoyer bRetour

et voilà !
A bientôt !
--
Marcel Berman
Animateur de la section belge de WinDAsso
Participez aux Wind'Rêveries 2006
http://www.windasso.org/cgi-bin/gespage.exe?exec=stat_w2006Inscr
Avatar
J-M des Grottes
avait prétendu :
salut !

On 9-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:

Salut,

Marci mais si je veux que cette procédure ne soit exécutée QUE à la
sortie du champ sai-saisie1 ? Comment faire comprendre de manière
dynamique qu'elle doit ne s'activer qu'à ce moment-là...?



Simple !
Le champ qui sert de modèle aux champs clonés doit appeller une fonction
locale à la fenêtre.
Par exemple :
Code de sortie du champ :
si pas MesControlesdesortie(moimeme..nom) alors
reprisesaisie(moimeme)
fin

Et tu crées une fonction locale
Procedure MesControlesDeSortie(sChamp est une chaine = "")
local
bRetour est un booleen = vrai
// Tu ajoutes ici les variables nécessaire à la compilation dyanmique

selon sChamp
cas ""
// On renvoie Vrai
bRetour = Vrai
cas "LeChampATester"

// Le code de validation dans une chaine à compiler
// La procedure compilée devrait renvoyer Vrai ou Faux
// compilation dynamique ...
bRetour = executetraitement("MaProc",trtprocedure)
autre cas
bRetour = faux
fin
renvoyer bRetour

et voilà !
A bientôt !



Oui, ok cela va nécessiter un brainstorming sérieux car j'ai ... 4
champs calculés différents ...

--
Dr J-M des Grottes
Gestionnaire du Registre des Néphrologues Francophones de Belgique
Avatar
marcel
Salut !


On 9-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:

avait prétendu :
> salut !
>
> On 9-Nov-2006, J-M des Grottes <j-mdesgrottes(nospam)@skynet.be> wrote:
>
>> Salut,
>>
>> Marci mais si je veux que cette procédure ne soit exécutée QUE à la
>> sortie du champ sai-saisie1 ? Comment faire comprendre de manière
>> dynamique qu'elle doit ne s'activer qu'à ce moment-là...?
>
> Simple !
> Le champ qui sert de modèle aux champs clonés doit appeller une fonction
> locale à la fenêtre.
> Par exemple :
> Code de sortie du champ :
> si pas MesControlesdesortie(moimeme..nom) alors
> reprisesaisie(moimeme)
> fin
>
> Et tu crées une fonction locale
> Procedure MesControlesDeSortie(sChamp est une chaine = "")
> local
> bRetour est un booleen = vrai
> // Tu ajoutes ici les variables nécessaire à la compilation dyanmique
>
> selon sChamp
> cas ""
> // On renvoie Vrai
> bRetour = Vrai
> cas "LeChampATester"
>
> // Le code de validation dans une chaine à compiler
> // La procedure compilée devrait renvoyer Vrai ou Faux
> // compilation dynamique ...
> bRetour = executetraitement("MaProc",trtprocedure)
> autre cas
> bRetour = faux
> fin
> renvoyer bRetour
>
> et voilà !
> A bientôt !

Oui, ok cela va nécessiter un brainstorming sérieux car j'ai ... 4
champs calculés différents ...





Pas tellement ...
Dans la procedure MesConrolesDeSortie, le "selon" te permet de choisir le
mode de contrôle ...
Par ailleurs, en me relisant, j'ai trouvé une erreur, dans ce "selon", le
"autre cas" devrait renvoyer vrai et pas faux !

Bien à toi !


--
Marcel Berman
Animateur de la section belge de WinDAsso
Participez aux Wind'Rêveries 2006
http://www.windasso.org/cgi-bin/gespage.exe?exec=stat_w2006Inscr