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

evaluer un champ

11 réponses
Avatar
eric flament
bonjour,

en windev 7.5
j'ai besoin d'evaluer une expression contenue dans un champ
exemple

base.mixcalc ="ABC"+client.nom+client.prenom

expression est une chaine
expression ={base.mixcalc}

info(expression)
me renvoit "ABC"+client.nom+client.prenom
j'ai besoin de recevoir "ABCdurandpaul"

comment faire
merci
eric

10 réponses

1 2
Avatar
Romain PETIT
Il se trouve que eric flament a formulé :
bonjour,



Bonjour,

en windev 7.5
j'ai besoin d'evaluer une expression contenue dans un champ
exemple
base.mixcalc ="ABC"+client.nom+client.prenom
expression est une chaine
expression ={base.mixcalc}
info(expression)
me renvoit "ABC"+client.nom+client.prenom
j'ai besoin de recevoir "ABCdurandpaul"



Je n'ai peut être pas bien compris ?

base.mixcalc ="ABC"+client.nom+client.prenom

info(base.mixcalc)

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
eric flament
Le 24/10/2011 13:37, Romain PETIT a écrit :
Il se trouve que eric flament a formulé :
bonjour,



Bonjour,

en windev 7.5
j'ai besoin d'evaluer une expression contenue dans un champ
exemple
base.mixcalc ="ABC"+client.nom+client.prenom
expression est une chaine
expression ={base.mixcalc}
info(expression)
me renvoit "ABC"+client.nom+client.prenom
j'ai besoin de recevoir "ABCdurandpaul"



Je n'ai peut être pas bien compris ?

base.mixcalc ="ABC"+client.nom+client.prenom

info(base.mixcalc)



j
'aimerai evaluer l'expression contenue par le champ mixcalc dans la base
base

monexpression= {base.mixcalc} attention ce sont des {} pas des ()

monexpression renvoit "'ABC'+client.nom+client.prenom"

alors que j'aimerai quelle me renvoit "ABCdupontpaul" cad ABC +lecontenu
du champ nom de la base client+lecontenu du champ prénom de la base client .

en clipper de ma jeunesse c'était &expression

vloila

cela a rapport aux indirections

eric
Avatar
Romain PETIT
Le 24/10/2011, eric flament a supposé :
j
'aimerai evaluer l'expression contenue par le champ mixcalc dans la base base



Donc pas le champ mais la rubrique (on dit comme ça en WLangage, le
champ c'est l'objet graphique)

monexpression= {base.mixcalc} attention ce sont des {} pas des ()
monexpression renvoit "'ABC'+client.nom+client.prenom"

alors que j'aimerai quelle me renvoit "ABCdupontpaul" cad ABC +lecontenu du
champ nom de la base client+lecontenu du champ prénom de la base client .



Donc c'est bien ce que j'ai écrit :
Si tu as initialisé ta rubrique
base.mixcalc ="ABC"+client.nom+client.prenom

Alors à cet instant, et si tu es positionné sur le client Paul Dupont
au niveau du fichier CLIENT, si tu fais :
Info(base.mixcalc)
Tu auras la boite de dialogue info affichant "ABCdupontpaul"

A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
eric
On 24 oct, 14:11, Romain PETIT wrote:

Bonjour romain


> j
> 'aimerai evaluer l'expression contenue par le champ mixcalc dans la bas e base

Donc pas le champ mais la rubrique (on dit comme ça en WLangage, le
champ c'est l'objet graphique)

> monexpression= {base.mixcalc}  attention ce sont des {} pas des ()
> monexpression renvoit "'ABC'+client.nom+client.prenom"

> alors que j'aimerai quelle me renvoit "ABCdupontpaul" cad ABC +leconten u du
> champ nom de la base client+lecontenu du champ prénom de la base clie nt .

Donc c'est bien ce que j'ai écrit :
Si tu as initialisé ta rubrique
base.mixcalc ="ABC"+client.nom+client.prenom

Alors à cet instant, et si tu es positionné sur le client Paul Dupont
au niveau du fichier CLIENT, si tu fais :
Info(base.mixcalc)
Tu auras la boite de dialogue info affichant "ABCdupontpaul"



non , ca me renvoie une erreur de type " une erreur est survenue dans
la fenétre l''élément ' "ABC"+client.nom+client.prenom ' est inconnu
"

j'utilise bien les indirecion genre

POUR i =1 A 30
{"bouton"+SansEspace(NumériqueVersChaine(i))} .. Etat = Invisible
FIN
HLitPremier(Articles,IDArticles)
TANTQUE PAS HEnDehors(Articles)
{"bouton"+SansEspace(NumériqueVersChaine(Articles.BTNUM))} .. Etat =
Visible
{"bouton"+SansEspace(NumériqueVersChaine(Articles.BTNUM))} .. Valeur
= Articles.description

{"bouton"+SansEspace(NumériqueVersChaine(Articles.BTNUM))} ..CouleurFond
= Articles.COULTYPE
{"bouton"+SansEspace(NumériqueVersChaine(Articles.BTNUM))} ..Couleur
= Articles.COULLYBE
{"bouton"+SansEspace(NumériqueVersChaine(Articles.BTNUM))} ..Note =
Articles.IDArticles
HLitSuivant(Articles,IDArticles)

FIN

la on attribue une valeur à un objet de type bouton


j'ai besoin de faire évaluer l'expression contenue dans une rubrique
de base de donnée et la windev ne fonctionne pas

quelle galére , en fait c'est pour éviter de coder des if ou des
selon / cas.

merci si la solution existe

un bout du code utilisé

HLitRecherche(Serialsoft,codesoft,Xsoftware)
Info("Lu " + Serialsoft.appelationsoft)
quoi = {Serialsoft.clefs}
Info(quoi) // erreur ici
sserialnumber=genere(Serialsoft.clefs)
info(sserialnumber)

eric
Avatar
Romain PETIT
Après mure réflexion, eric a écrit :
un bout du code utilisé

HLitRecherche(Serialsoft,codesoft,Xsoftware)
Info("Lu " + Serialsoft.appelationsoft)
quoi = {Serialsoft.clefs}
Info(quoi) // erreur ici
sserialnumber=genere(Serialsoft.clefs)
info(sserialnumber)



J'ai pas vraiment compris le fonctionnement de ton code mais pour faire
des indirections, il faut utiliser des chaines de caractères.
si tu fais :

quoi = {Serialsoft.clefs}

Tu fais une indirection sur le contenu de Serialsoft.clefs
donc si serialsoft.clefs est "ABCTOTO", tu fais une indirection sur un
champ, une rubrique, une variable appellé ABCTOTO.
(donc erreur si ce champ, cette variable ou cette rubrique n'existe
pas)

Par contre, si tu fais

quoi = {"Serialsoft.clefs"}

ou

quoi = {Serialsoft.clefs..nom}

Alors là tu fais une indirection sur le champ, la rubrique ou la
variable elle-même et ça te donne la valeur (donc "ABCTOTO").

Mais pour une rubrique, ce type d'indirection est identique à

quoi = Serialsoft.clefs
(sauf si c'est un fichier dynamique/externe)

NB : Il est préférable d'indiquer le type attendu dans une indirection,
pour une question de lisibilité du code et de rapidité :
Exemple : {"Serialsoft.clefs", indRubrique}

et encore mieux en rajoutant ce que tu cherches à récupérer (..Valeur).
Exemple : {"Serialsoft.clefs", indRubrique}..Valeur

A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
eric
On 24 oct, 15:53, Romain PETIT wrote:
Bonsoir romain

merci beaucoup pour l'aide au code,
en finalité, je stocke dans une base les rubriques de saisie et non le
nom des champs des bases a utiliser et la ça fonctionne.
le code est juste une fonction permettant la génération d'un numero de
série.

chaque type de programmme ayant une méthode de calcul différent

Merci Beucoup

Cordialement
Eric
Avatar
eric
Bonsoir Romain
suite et fin du périple,

{} ne fonctionne que sur une rubrique
exemple {Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs =
xclient
mais
si j'ai
{Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs = xclient
+xcodepostal

ca marche po

il faut que je me tourne vers compile() et executetraitement(), la
fonction créé par picasso car
elle est trop abstraite pour moi

pour faire du multichamp, je vais utiliser
{Serialsoft.clefs1,indChamp} + {Serialsoft.clefs2,indChamp} +
{Serialsoft.clefs3,indChamp} etc...

merci encore et bonne soirée
eric
Avatar
Romain PETIT
eric avait soumis l'idée :
Bonsoir Romain
suite et fin du périple,



Pas tout à fait...

{} ne fonctionne que sur une rubrique
exemple {Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs > xclient
mais
si j'ai
{Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs = xclient
+xcodepostal
ca marche po



Non non non, encore une fois tu fais la confusion entre un champ et une
rubrique.
En WLangage, un champ est un objet graphique (une liste, un champ de
saisie, un bouton etc...)
Une rubrique est une rubrique d'un fichier de donnée.

Dans ton cas, c'est *indRubrique* et non indChamp que tu dois utiliser
dans tes indirections...

Dans le cas d'une clé composée, tu auras effectivement un problème si
tu récupères le contenu de la clé composée dans une variable chaine, il
faut que tu décomposes la clé.
Voir l'aide à "Clé composée", "..CléComposée", "..Composante" etc...

A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
eric
On 24 oct, 16:59, Romain PETIT wrote:
eric avait soumis l'idée :

> Bonsoir Romain
> suite et fin du périple,

Pas tout à fait...



si car , la base contient des références au champ de saisie, donc
indchamp marche bien

> {} ne fonctionne que sur une rubrique
> exemple {Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs =
> xclient
> mais
> si j'ai
>  {Serialsoft.clefs,indChamp} est ok quand serialsoft.clefs = xclien t
> +xcodepostal
> ca marche po

Non non non, encore une fois tu fais la confusion entre un champ et une
rubrique.
En WLangage, un champ est un objet graphique (une liste, un champ de
saisie, un bouton etc...)



bon a arréte d'engeuler un petit vieux:-)

la rubrique contient la référence à un objet ( en cours de saisie)

Une rubrique est une rubrique d'un fichier de donnée.

Dans ton cas, c'est *indRubrique* et non indChamp que tu dois utiliser
dans tes indirections...



ben je suis passé a la saisie (objet qui est un champ de saisie)


Dans le cas d'une clé composée, tu auras effectivement un problème si
tu récupères le contenu de la clé composée dans une variable chai ne, il
faut que tu décomposes la clé.
Voir l'aide à "Clé composée", "..CléComposée", "..Composante" e tc...



je veux pas la décomposer, pour faire simple
méthode de calcul du numero de serie = nom entreprise+codepostal
+telephone+unautre rubrique
c'est stocké dans une rubrique et ca fait référence à des champs en
saisie

donc un grand merci ca fonctionne

eric


A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windevhttp://www.mesnews.net/http://fr.wik ipedia.org/wiki/Newsgroup
Avatar
tt
Le Mon, 24 Oct 2011 13:27:08 +0200, eric flament a
écrit:

bonjour,

en windev 7.5
j'ai besoin d'evaluer une expression contenue dans un champ
exemple

base.mixcalc ="ABC"+client.nom+client.prenom

expression est une chaine
expression ={base.mixcalc}

info(expression)
me renvoit "ABC"+client.nom+client.prenom
j'ai besoin de recevoir "ABCdurandpaul"

comment faire
merci
eric



Bonjour,

La compilation dynamique permet de faire plus que des indirections.
Dans une de nos applications l'utilisateur peut saisir une formule de
calcul. (ici du numérique)

On l'évalue ainsi:

sFormule="Renvoyer "+sFormule //faire WD
sResultatCompile = Compile("Proc_dynamique", sFormule) //compiler
SELON sResultatCompile
CAS "" :
QUAND EXCEPTION DANS //059
nResultat = ExécuteTraitement("Proc_dynamique",
trtProcédure) //executer
FAIRE //059
Info(" Formule "+sNomForm+" erreur au calcul") //059
FIN //059
CAS "ERR" : Info( "Formule. "+sFormule+" erronée"+RC+ErreurInfo());RE TOUR
FIN
{sChamp,indChamp}=Arrondi(nResultat,2) //résultat

Si l'utilisateur saisit 2-3+7 on obtient 6.
--
TT
1 2