OVH Cloud OVH Cloud

affecter une fonction de calcul à un champ

10 réponses
Avatar
Libellule
Bonjour,

J'ai besoin de programmer un petit calcul dans le champ d'une table. Soit T
ce champ. J'aimerais qu'il prenne une valeur (numérique) dépendante d'autres
champs (numériques) de la même table. Est-ce possible ? et si oui, comment
dois-je procéder ?

Merci d'avance pour votre aide.

10 réponses

Avatar
Libellule
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si T1<x alors
T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin bon un truc dans ce
goût là (T1 et T2 etant des champs appartenant à la même table que T).


Bonjour,

J'ai besoin de programmer un petit calcul dans le champ d'une table. Soit T
ce champ. J'aimerais qu'il prenne une valeur (numérique) dépendante d'autres
champs (numériques) de la même table. Est-ce possible ? et si oui, comment
dois-je procéder ?

Merci d'avance pour votre aide.


Avatar
Tisane
Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une table.
Soit T ce champ. J'aimerais qu'il prenne une valeur (numérique)
dépendante d'autres champs (numériques) de la même table. Est-ce
possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre avec Excel
;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une table.

--
Tisane

Avatar
Libellule
Ok, ça me va très bien dans une requête. Mais comment fait-on le "si" ....
"alors" ... "sinon" etc ?
Merci


Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une table.
Soit T ce champ. J'aimerais qu'il prenne une valeur (numérique)
dépendante d'autres champs (numériques) de la même table. Est-ce
possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre avec Excel
;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une table.

--
Tisane





Avatar
Tisane
Ok, ça me va très bien dans une requête. Mais comment fait-on le "si"
.... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin
bon un truc dans ce goût là (T1 et T2 etant des champs appartenant à
la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2 premières colonnes
(ce n'est pas obligatoire, mais ce sera plus pratique pour vérifier ton
résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à taper ;-)
Nota 2 : T n'est pas un champ dans la table. C'est un champ "virtuel"
n'existant que dans la requête.

--
Tisane


Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une table.
Soit T ce champ. J'aimerais qu'il prenne une valeur (numérique)
dépendante d'autres champs (numériques) de la même table. Est-ce
possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre
avec Excel ;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une table.

--
Tisane





Avatar
Libellule
Super ! ça marche ! merci beaucoup !
me reste à réfléchir à l'erreur que je fais sûrement parce que ma requête ne
trouve plus aucun enregistrement alors que ce n'était pas le but recherché,
lol !


Ok, ça me va très bien dans une requête. Mais comment fait-on le "si"
.... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin
bon un truc dans ce goût là (T1 et T2 etant des champs appartenant à
la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2 premières colonnes
(ce n'est pas obligatoire, mais ce sera plus pratique pour vérifier ton
résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à taper ;-)
Nota 2 : T n'est pas un champ dans la table. C'est un champ "virtuel"
n'existant que dans la requête.

--
Tisane


Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une table.
Soit T ce champ. J'aimerais qu'il prenne une valeur (numérique)
dépendante d'autres champs (numériques) de la même table. Est-ce
possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre
avec Excel ;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une table.

--
Tisane









Avatar
Libellule
Enigme : une requête selection me donne une dizaine d'enregistrements dont le
champ T1 comporte différentes valeurs. Lorsque je rajoute dans les critères
du champ T : T=iif(T1={une valeur présente dans la sélection en
question};T={0 par exemple}) la requête est vide.
C'est pas normal ? d'où pourrait venir l'erreur ?
Merci encore...


Super ! ça marche ! merci beaucoup !
me reste à réfléchir à l'erreur que je fais sûrement parce que ma requête ne
trouve plus aucun enregistrement alors que ce n'était pas le but recherché,
lol !


Ok, ça me va très bien dans une requête. Mais comment fait-on le "si"
.... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin
bon un truc dans ce goût là (T1 et T2 etant des champs appartenant à
la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2 premières colonnes
(ce n'est pas obligatoire, mais ce sera plus pratique pour vérifier ton
résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à taper ;-)
Nota 2 : T n'est pas un champ dans la table. C'est un champ "virtuel"
n'existant que dans la requête.

--
Tisane


Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une table.
Soit T ce champ. J'aimerais qu'il prenne une valeur (numérique)
dépendante d'autres champs (numériques) de la même table. Est-ce
possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre
avec Excel ;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une table.

--
Tisane











Avatar
Tisane
Enigme : une requête selection me donne une dizaine d'enregistrements
dont le champ T1 comporte différentes valeurs. Lorsque je rajoute
dans les critères du champ T : T=iif(T1={une valeur présente dans la
sélection en question};T={0 par exemple}) la requête est vide.
C'est pas normal ? d'où pourrait venir l'erreur ?


Tu ne mets pas "iif..." dans les critères au moins.
Peux-tu copier le code SQL de ta requête dans ton prochain message (menu
Affichage | Mode SQL) ?

--
Tisane



Super ! ça marche ! merci beaucoup !
me reste à réfléchir à l'erreur que je fais sûrement parce que ma
requête ne trouve plus aucun enregistrement alors que ce n'était pas
le but recherché, lol !


Ok, ça me va très bien dans une requête. Mais comment fait-on le
"si" .... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin
bon un truc dans ce goût là (T1 et T2 etant des champs appartenant
à la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2 premières
colonnes (ce n'est pas obligatoire, mais ce sera plus pratique pour
vérifier ton résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à
taper ;-) Nota 2 : T n'est pas un champ dans la table. C'est un
champ "virtuel" n'existant que dans la requête.

--
Tisane


Bonjour Libellule,

J'ai besoin de programmer un petit calcul dans le champ d'une
table. Soit T ce champ. J'aimerais qu'il prenne une valeur
(numérique) dépendante d'autres champs (numériques) de la même
table. Est-ce possible ? et si oui, comment dois-je procéder ?


Une table ne peut pas contenir un champ calculé (ne pas confondre
avec Excel ;-).
Mais tu peux le faire dans une requête et éventuellement (mais pas
recommandé), copier le résultat "en dur" dans le champ d'une
table.

--
Tisane











Avatar
Eric
Bonjour,

si je puis me permettre
Une petite mais toute petite correction sur la réponse de Tisane,
excellente au demeurant ;-).
Il faut mettre
T:iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))
et non
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Deux points (:) après le T et non le signe égal.
D'autre part le If() ou VraiFaux() implique que tu définis le cas où la
condition (test logique) retourne Vrai ET le cas où la condition
retourne Faux.
Donc l'expression :
T=iif(T1={une valeur présente dans la sélection en question};T={0 par
exemple}) n'est pas valide à cause du signe égal et du fait que tu ne
précises pas ce qu'il faut faire si T1 n'appartient pas à {une valeur
présente dans la sélection en question}

Enigme : une requête selection me donne une dizaine d'enregistrements dont le
champ T1 comporte différentes valeurs. Lorsque je rajoute dans les critères
du champ T : T=iif(T1={une valeur présente dans la sélection en
question};T={0 par exemple}) la requête est vide.
C'est pas normal ? d'où pourrait venir l'erreur ?
Merci encore...



Super ! ça marche ! merci beaucoup !
me reste à réfléchir à l'erreur que je fais sûrement parce que ma requête ne
trouve plus aucun enregistrement alors que ce n'était pas le but recherché,
lol !



Ok, ça me va très bien dans une requête. Mais comment fait-on le "si"
.... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1. Enfin
bon un truc dans ce goût là (T1 et T2 etant des champs appartenant à
la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2 premières colonnes
(ce n'est pas obligatoire, mais ce sera plus pratique pour vérifier ton
résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à taper ;-)
Nota 2 : T n'est pas un champ dans la table. C'est un champ "virtuel"
n'existant que dans la requête.

--
Tisane





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
../...

il ne faut pas mettre la formule en critère, il s'agit d'un champ
calculé dans la requête.



Enigme : une requête selection me donne une dizaine d'enregistrements
dont le champ T1 comporte différentes valeurs. Lorsque je rajoute dans
les critères du champ T : T=iif(T1={une valeur présente dans la
sélection en question};T={0 par exemple}) la requête est vide.
C'est pas normal ? d'où pourrait venir l'erreur ?
Merci encore...




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Tisane
Bonjour Eric,

si je puis me permettre
Une petite mais toute petite correction sur la réponse de Tisane,
excellente au demeurant ;-).
Il faut mettre
T:iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))
et non
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))
Deux points (:) après le T et non le signe égal.


Il était temps que tu arrives. C'est au moins la 2e fois que je fais cette
erreur dans un post.
J'y vais tout droit (mais je ne la commets jamais dans le requêteur ;-)

--
Tisane

D'autre part le If() ou VraiFaux() implique que tu définis le cas où
la condition (test logique) retourne Vrai ET le cas où la condition
retourne Faux.
Donc l'expression :
T=iif(T1={une valeur présente dans la sélection en question};T={0 par
exemple}) n'est pas valide à cause du signe égal et du fait que tu ne
précises pas ce qu'il faut faire si T1 n'appartient pas à {une valeur
présente dans la sélection en question}

Enigme : une requête selection me donne une dizaine
d'enregistrements dont le champ T1 comporte différentes valeurs.
Lorsque je rajoute dans les critères du champ T : T=iif(T1={une
valeur présente dans la sélection en question};T={0 par exemple}) la
requête est vide. C'est pas normal ? d'où pourrait venir l'erreur ?
Merci encore...



Super ! ça marche ! merci beaucoup !
me reste à réfléchir à l'erreur que je fais sûrement parce que ma
requête ne trouve plus aucun enregistrement alors que ce n'était
pas le but recherché, lol !



Ok, ça me va très bien dans une requête. Mais comment fait-on le
"si" .... "alors" ... "sinon" etc ?
Soit T ce champ donc. Pour vous donner une idée, j'aimerais que si
T1<x alors T=T1-T2 sinon si T2>y alors T=T1+T2 sinon T=T2-T1.
Enfin bon un truc dans ce goût là (T1 et T2 etant des champs
appartenant à la même table que T).


Dans ta requête, tu places les champs T1 et T2 dans les 2
premières colonnes (ce n'est pas obligatoire, mais ce sera plus
pratique pour vérifier ton résultat).
Dans la 3e colonne, tu tapes ceci dans la ligne "Champ":
T=iif(T1<x;T1-T2;iif(T2>y;T1+T2;T2-T1))

Nota 1 : iif sera transformé en VraiFaux (mais c'est plus court à
taper ;-) Nota 2 : T n'est pas un champ dans la table. C'est un
champ "virtuel" n'existant que dans la requête.

--
Tisane