OVH Cloud OVH Cloud

[Etat]Changem.Valeur D'un champ

5 réponses
Avatar
Torquemada
Bonjour à tous,
Sur l'evenement sur ouverture de l'état j'ai du code vba qui crée une
reque^te qui me sert de source pour l'état ,(elle sélectionne des articles
dans une table suivant un critère).Celà marche parfaitement.
Je voudrais maintenant créer le même état en modifiant la valeur qu'il va
afficher dans le champ marge suivant une condition.
Exemple Si marge (dans la table et dans la rqt) =45 alors marge(dans l'état)
=20.
Voici mon code qui ne marche pas au niveau de la dernière ligne.
strSQL = "SELECT * FROM " & strEtat & " WHERE (((" & strEtat & ".Usage)
= -1))ORDER BY " & strEtat & ".NomMed;"

Set qdf = db.CreateQueryDef("rqt")

qdf.SQL = strSQL

Me.RecordSource = strSQL

If [Marge]= 45 then [Marge] = 20

A quel niveau dois je modifier mon code.

Merci de m'avoir consacré de votre temps

5 réponses

Avatar
Eric
Bonjour,

A première vue je ferai la modification dans la définition du sql de la
requête du genre:

SELECT champ1, champ2, champ3,..., IIF([Marge]E;20;[Marge]), ...
FROM ...
WHERE ...
ORDER BY ...

A+
Eric

"Torquemada" écrivait
news:cepslr$ma5$:

Bonjour à tous,
Sur l'evenement sur ouverture de l'état j'ai du code vba qui crée une
reque^te qui me sert de source pour l'état ,(elle sélectionne des
articles dans une table suivant un critère).Celà marche parfaitement.
Je voudrais maintenant créer le même état en modifiant la valeur
qu'il va afficher dans le champ marge suivant une condition.
Exemple Si marge (dans la table et dans la rqt) E alors marge(dans
l'état)
.
Voici mon code qui ne marche pas au niveau de la dernière ligne.
strSQL = "SELECT * FROM " & strEtat & " WHERE (((" & strEtat &
".Usage)
= -1))ORDER BY " & strEtat & ".NomMed;"

Set qdf = db.CreateQueryDef("rqt")

qdf.SQL = strSQL

Me.RecordSource = strSQL

If [Marge]= 45 then [Marge] = 20

A quel niveau dois je modifier mon code.

Merci de m'avoir consacré de votre temps






Avatar
Eric
.../...
Remplacer les ; par des , dans le Iif

IIF([Marge]E,20,[Marge]) au lieu de IIF([Marge]E;20;[Marge])

Eric
Avatar
Torquemada
Merci .C'est une bonne idée mais j'avais un peu simplifié ma question.Suite
a vos conseils voici ma rqt finale ,elle plante dans les iif imbriqués par
manque d'un opérateur(dixit access).
L'idée est de faire diminuer une marge en fonction de sa valeur de
départ.Voici la rqt
strSQL = "SELECT * , IIf([Marge]>36,(([Marge]-20)/(100-20)),IIf ([Marge]=<36
and IIf [Marge]> ,20 ,[Marge])) AS NewMarge FROM " & strEtat & " WHERE
(((" & strEtat & ".Usage) = -1))ORDER BY " & strEtat & ".NomMed;"

Merci de m'avoir consacré de votre temps




"Eric" a écrit dans le message de
news:
.../...
Remplacer les ; par des , dans le Iif

IIF([Marge]E,20,[Marge]) au lieu de IIF([Marge]E;20;[Marge])

Eric




Avatar
Eric
Bonjour Torquemada

J'ai regardé que les IIF imbriqués

Tu testes si Marge est >36 si vrai tu fais (Marge-20)/(100-20) ok mais
apres pourquoi testes tu si Marge est <6, c'est pas utile.

Donc
Iif([Marge]>36,([Marge]-20)/(100-20),IIf([Marge]> ,20 ,[Marge])) as
NewMarge
devrait suffire.

A+
Eric

"Torquemada" écrivait
news:cerj7a$e28$:

Merci .C'est une bonne idée mais j'avais un peu simplifié ma
question.Suite a vos conseils voici ma rqt finale ,elle plante dans
les iif imbriqués par manque d'un opérateur(dixit access).
L'idée est de faire diminuer une marge en fonction de sa valeur de
départ.Voici la rqt
strSQL = "SELECT * , IIf([Marge]>36,(([Marge]-20)/(100-20)),IIf
([Marge]=<36 and IIf [Marge]> ,20 ,[Marge])) AS NewMarge FROM " &
strEtat & " WHERE (((" & strEtat & ".Usage) = -1))ORDER BY " &
strEtat & ".NomMed;"

Merci de m'avoir consacré de votre temps




"Eric" a écrit dans le message de
news:
.../...
Remplacer les ; par des , dans le Iif

IIF([Marge]E,20,[Marge]) au lieu de IIF([Marge]E;20;[Marge])

Eric









Avatar
Torquemada
Cela Marche
Merci Eric

"Eric" a écrit dans le message de
news:
Bonjour Torquemada

J'ai regardé que les IIF imbriqués

Tu testes si Marge est >36 si vrai tu fais (Marge-20)/(100-20) ok mais
apres pourquoi testes tu si Marge est <6, c'est pas utile.

Donc
Iif([Marge]>36,([Marge]-20)/(100-20),IIf([Marge]> ,20 ,[Marge])) as
NewMarge
devrait suffire.

A+
Eric

"Torquemada" écrivait
news:cerj7a$e28$:

Merci .C'est une bonne idée mais j'avais un peu simplifié ma
question.Suite a vos conseils voici ma rqt finale ,elle plante dans
les iif imbriqués par manque d'un opérateur(dixit access).
L'idée est de faire diminuer une marge en fonction de sa valeur de
départ.Voici la rqt
strSQL = "SELECT * , IIf([Marge]>36,(([Marge]-20)/(100-20)),IIf
([Marge]=<36 and IIf [Marge]> ,20 ,[Marge])) AS NewMarge FROM " &
strEtat & " WHERE (((" & strEtat & ".Usage) = -1))ORDER BY " &
strEtat & ".NomMed;"

Merci de m'avoir consacré de votre temps




"Eric" a écrit dans le message de
news:
.../...
Remplacer les ; par des , dans le Iif

IIF([Marge]E,20,[Marge]) au lieu de IIF([Marge]E;20;[Marge])

Eric