Difficulté avec "if"

Le
Luchr
Bonjour à tous. Je suis sur que vous pouvez m'aider. Je cherche à
définir la valeur d'une zone texte dans un formulaire en fonction
d'une date de naissance. Cela fonctionne mais mon code attribut la
valeur à tous les enregistremnts du formulaire.
Voici le code.
Private Sub Datedenaissance_AfterUpdate()
If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
Exit Sub
End If
End Sub

D'avance merci si vous pouvez me dire ou je me suis planté
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
le méruvien
Le #6270551
Ton champ datedenaissance n'est-il pas un champ independant?



"Luchr"
Bonjour à tous. Je suis sur que vous pouvez m'aider. Je cherche à
définir la valeur d'une zone texte dans un formulaire en fonction
d'une date de naissance. Cela fonctionne mais mon code attribut la
valeur à tous les enregistremnts du formulaire.
Voici le code.
Private Sub Datedenaissance_AfterUpdate()
If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
Exit Sub
End If
End Sub

D'avance merci si vous pouvez me dire ou je me suis planté
Willi2004
Le #6270491
Bonjour Luchr.
Essaye avec:

Private Sub Datedenaissance_AfterUpdate()

If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Else
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Else
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Else
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
End If
End If
End If
End If

End Sub


"Luchr"
Bonjour à tous. Je suis sur que vous pouvez m'aider. Je cherche à
définir la valeur d'une zone texte dans un formulaire en fonction
d'une date de naissance. Cela fonctionne mais mon code attribut la
valeur à tous les enregistremnts du formulaire.
Voici le code.
Private Sub Datedenaissance_AfterUpdate()
If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
Exit Sub
End If
End Sub

D'avance merci si vous pouvez me dire ou je me suis planté
Gloops
Le #6270481
Salut,

Ou Select Case, peut-être ?

ça peut améliorer la lisibilité je pense, mais pour le problème
d'exactitude du résultat je croirais assez à un contrôle indépend ant. Il
n'y a pas de faute de frappe, dans les noms de contrôles ? Hum, quoique ,
on aurait eu un message qui demandait la valeur.

ça risque d'être plus facile à tester de rejeter la conversion dans une
fonction.

Auquel cas on aura juste à mettre
Me.[Texte140] = Conversion(Me![Datedenaissance]

Le point d'exclamation signifie qu'on a affaire à un champ de jeu
d'enregistrements, alors que le point signifie qu'on a affaire à un
objet enfant, classiquement un contrôle s'agissant d'un formulaire.

La différence a-t-elle une importance dans ce contexte ?

Et je dois dire que Texte140, je ne devine pas ce que ça signifie.
Pour corriger ça dans deux ans si tu as un problème avec, tu vas t'am user.
_________________________________________
Willi2004 a écrit, le 14/05/2007 20:53 :
Bonjour Luchr.
Essaye avec:

Private Sub Datedenaissance_AfterUpdate()

If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Else
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Else
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Else
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
End If
End If
End If
End If

End Sub



Willi2004
Le #6270451
Salut Gloops.
Je ne crois pas que Select Case puisse être utilisé dans le cas présent,
mais je peux me tromper.


"Gloops" %

Salut,

Ou Select Case, peut-être ?

ça peut améliorer la lisibilité je pense, mais pour le problème
d'exactitude du résultat je croirais assez à un contrôle indépendant. Il
n'y a pas de faute de frappe, dans les noms de contrôles ? Hum, quoique,
on aurait eu un message qui demandait la valeur.

ça risque d'être plus facile à tester de rejeter la conversion dans une
fonction.

Auquel cas on aura juste à mettre
Me.[Texte140] = Conversion(Me![Datedenaissance]

Le point d'exclamation signifie qu'on a affaire à un champ de jeu
d'enregistrements, alors que le point signifie qu'on a affaire à un
objet enfant, classiquement un contrôle s'agissant d'un formulaire.

La différence a-t-elle une importance dans ce contexte ?

Et je dois dire que Texte140, je ne devine pas ce que ça signifie.
Pour corriger ça dans deux ans si tu as un problème avec, tu vas t'amuser.
_________________________________________
Willi2004 a écrit, le 14/05/2007 20:53 :
Bonjour Luchr.
Essaye avec:

Private Sub Datedenaissance_AfterUpdate()

If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Else
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Else
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Else
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
End If
End If
End If
End If

End Sub



Gloops
Le #6270431
Willi2004 a écrit, le 14/05/2007 23:54 :
Salut Gloops.
Je ne crois pas que Select Case puisse être utilisé dans le cas pré sent,
mais je peux me tromper.



Salut,

Je n'ai pas testé, mais je viens de vérifier à l'instant dans l'aid e
d'Access que la syntaxe de Select Case comporte To, qui permet de
définir une plage de valeurs.

Il existe aussi Is et Like, je suppose que Like ne servira pas ici.

ça vaudrait probablement le coup de creuser.

Je cite deux lignes au hazard dans l'aide de Select Case (qui risquent
d'être affichées sur trois lignes dans un newsgroup) :

Vous pouvez utiliser plusieurs expressions ou plages de valeurs dans
chaque locution Case. Par exemple, la ligne suivante est valide:

Case 1 To 4, 7 To 9, 11, 13, Is > NombreMax

Gloops
Le #6270411
Gloops a écrit, le 15/05/2007 00:20 :
Case 1 To 4, 7 To 9, 11, 13, Is > NombreMax


Ah oui une précision : je proposais de rejeter la conversion dans une

fonction, il se peut qu'il vaille autant faire ça avant le rateau
(c'est-à-dire la suite de If ou le Select Case), ça évitera que la
fonction soit exécutée plusieurs fois si on utilise le résultat
plusieurs fois.
Donc, on met le résultat dans une variable, et on teste ensuite la
variable dans le rateau.

Même si on a l'impression d'avoir une machine puissante, on a tendance à
mettre de plus en plus de choses dessus, et il arrive un jour où elle a
du mal à suivre ; alors si les applications sont optimisées un chouï a,
ça aide.

Fabien
Le #6270341
Bonjour à tous. Je suis sur que vous pouvez m'aider. Je cherche à
définir la valeur d'une zone texte dans un formulaire en fonction
d'une date de naissance. Cela fonctionne mais mon code attribut la
valeur à tous les enregistremnts du formulaire.
Voici le code.
Private Sub Datedenaissance_AfterUpdate()
If Me![Datedenaissance] < #1/1/2002# Then
Me.[Texte140] = "CP"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2003# Then
Me![Texte140] = "G/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2004# Then
Me![Texte140] = "M/S"
Exit Sub
End If
If Me![Datedenaissance] < #1/1/2005# Then
Me![Texte140] = "P/S"
Exit Sub
End If
End Sub

D'avance merci si vous pouvez me dire ou je me suis planté

Bonjour,

Ton formulaire serait-il de type continu et ta zone [Texte140] un
controle indépendant ?
Si oui
le comportement que tu indique est normal. Un champs indépendant ne
peut pas contenir un 'calcul' lié aux champs des enregistrements sur un
formulaire en continu :-(
Ca marche sur un formulaire enregistrement unique.
Si non
ben je sais pas :-(
Fin Si
Voilà

Publicité
Poster une réponse
Anonyme