Vider champs sur condition

Fermé
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013 - 19 mai 2013 à 17:45
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013 - 20 mai 2013 à 17:12
Bjr la communauté
Je voudrais vider certain champs de type date sous certaines conditions.
J'ai un etat basé sur une requête R_Clients avec comme champs nom, prenom ville datedebut et datefin.
Comment puis je faire pour vider les champs datedebut et datefin si datefin est anterieur a la date du jour. Tout ca en vba.
merci
A voir également:

7 réponses

Bonsoir,
Il te faut une requête "MiseAJour", afectant la valeur "Null" au champs "DateDebut" et "DateFin" lorsque DateFin <Date().
Cela peut très bien se faire en mode "création" (ou mode "Graphique" selon l'appellation retenue)
En mode SQL ce sera qqch du genre
UPDATE dateDebut, DateFin SET NomTable.dateDebut= Null, NomTable.dateFin= Null WHERE ((NomTable.dateFin)<Date())
0
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013
20 mai 2013 à 11:22
Merci d'avoir répondu Tessel75
J'suis tout a fait d'accord avec toi sur la requête de MàJ, et j'utilise cette solution à l'heure actuelle. Le soucis c'est que c'est en manuel et j'aurais voulu automatiser cette opération avec du vba (sans message de confirmation etc) lors de l'ouverture de mon etat.
merci
Bonne journée
0
Bonjour,
"Le soucis c'est que c'est en manuel et j'aurais voulu automatiser cette opération avec du vba (sans message de confirmation etc)"

Alors ta question n'est pas bien posée, parce que ce qui te grippe n'est pas (ne serait pas) la requête-MAJ elle-même, mais la commande et l'enchaînement des fonctions à l'intérieur.
Dans ce cas, en opposition avec certains autres internautes, je te recommanderais plutôt de procéder par macros au début pour bien te familiariser avec les différents types de commandes et l'ordre de déclenchement
Sinon la procédure est du type:
RequeteMAJ = "UPDATE ...."
    DoCmd.SetWarnings False  ' Exécute la requête sans avertissement
    DoCmd.RunSQL RequeteMAJ
    .....  


Maintenant:"lors de l'ouverture de mon etat"
De 2 choses, ou la requête ne change pas les données-sources de l'état, et alors il n'y a pas de problème,
ou elle change ces données et alors il y a de forts risques que ça ne se passe pas bien, parce que tu lances les calculs pour la mise en forme de l'état, et en même temps tu en changes les données-sources. Si tu tiens à cette mise à jour, il faut mieux:
1) Lancer la requêteMaj
2) Ouvrir l'état ( DoCmd.OpenReport ....) (A voir sur le didacticiel: sélectionner le mot-clé + F1)

Bonne suite
0
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013
20 mai 2013 à 13:41
Génial, marche nickel Tessel75
Merci
Une cht'ite question.
Tu dis :
"elle change ces données et alors il y a de forts risques que ça ne se passe pas bien, parce que tu lances les calculs pour la mise en forme de l'état, et en même temps tu en changes les données-sources"
Oui les données changent, donc vaudrait mieux que je mette la MàJ sur événement lors de l'ouverture du formulaire ?
Merci c'est sympa de ta part.
0
Non! Il faut procéder en 2 temps ... enchaînés mais séparés.

il faut mieux:
1) Lancer la requêteMaj
puis
2) Ouvrir l'état ( DoCmd.OpenReport ....) (A voir sur le didacticiel: sélectionner le mot-clé + F1)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013
20 mai 2013 à 14:06
Et comment je peux faire alors ??
merci
0
Re-
Eh bien! Dans la procédure qui commande l'ouverture de l'état, mettre les 2 commandes dans l'ordre indiqué. D'abord "Exécuter la Requête", ensuite "Ouvrir l'état".
0
glouton57 Messages postés 22 Date d'inscription dimanche 19 mai 2013 Statut Membre Dernière intervention 11 juin 2013
20 mai 2013 à 17:12
C'est tout bête ,-)
Merci beaucoup Tessel75
0