IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Mise à jour d'un champ Date [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 52
    Par défaut Mise à jour d'un champ Date
    Bien le bonjour à tous!

    Je monte une BDD Access dans le but de réaliser des campagnes de mails!

    La je bute sur un léger problème (plein d'idées mais j'ai du mal à les mettre en place!). En effet, j'ai quasiment réalisé tout le processus de mailing, mais il me manque tout de même la conclusion: mettre à jour le champ "Dernier Email envoyé le". Tout simplement, j'aimerais avoir un bouton sur mes différents formulaires qui, sur l'événement "clic" (si j'ai bien compris, ca se lance quand je clique sur le bouton ), met à jour le champ "Dernier Email envoyé" du formulaire ouvert en y insérant la date d'aujourd'hui (Date() quoi).

    J'aimerais aussi qu'il y ait une sorte de certification : "Avez vous vraiment envoyé des mails à ces personnes aujourd'hui?"! Pour le moment, j'ai tout simplement créer un bouton "Mailing fait" qui envoie sur un formulaire où justement j'ai écri: "Avez vous vraiment envoyé des mails à ces personnes aujourd'hui?" avec deux boutons: un "oui" quiferme le formulaire de certification et doit lancer la procédure ci dessus et un "non" qui ferme le formulaire. C'est un peu le système D donc si vous avez mieux, je suis preneur.

    Voila ce que pour le moment j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Emails_envoyés_Click()
     
        Me.Email_envoyé_le = Date
     
    End Sub
    Merci à tous!

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut message avec validation
    Pour un cas aussi simple il existe un message standard access

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Emails_envoyés_Click()
      If MsgBox("OK ?", vbYesNo, "titre") = vbYes Then Email_envoyé_le = Date
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 52
    Par défaut
    Merci de ta réponse.

    Alors ca fonctionne parfaitement pour ce qui est du message avant MAJ.

    Par contre, ta commande ne met à jour qu'un enregistrement là où je veux mettre à jour un champ entier.

    J'utilise pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Envoi_des_mails_Click()
    On Error GoTo Err_Envoi_des_mails_Click
     
        If MsgBox("Mettre à jour du champ [Email envoyé le] ?", vbYesNo, "Vous souhaitez...") = vbYes 
    Then DoCmd.RunSQL "UPDATE InfosClients SET InfosCLients.[Email envoyé le] = Date();"
        MsgBox "La mise à jour sera prise en compte lors de la prochaine ouverture du formulaire.", vb, "BRAVO !"
     
    Exit_Envoi_des_mails_Click:
        Exit Sub
     
    Err_Envoi_des_mails_Click:
        MsgBox Err.Description
        Resume Exit_Envoi_des_mails_Click
     
    End Sub
    Comme vous pouvez le constater ce code s'applique uniquement à mon formulaire InfosClients. Et parfois, il laisse le premier ou le dernier enregistrement sans MAJ ( c'est pas trop grave sur 4000 enregistrements mais c'est pas parfait).

    Donc le truc parfait serait que cette procédure s'applique au formulaire en cours ( j'ai essayé le Me. mais j'dis mal écrire la commande).

    Voila, si vous trouvez c'est cool, sinon je bidouillerais et je mettrais résolu car au final j'ai mon message de validation, merci encore

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonjour,

    J'ai relu 3 fois je ne comprends pas ce que tu veux faire exactement

    A l'origine tu voulais modifier un champ (d'une fenêtre ?) mais là tu fais un update - d'un champ d'une table qui est aussi dans la fenêtre ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Comme vous pouvez le constater ce code s'applique uniquement à mon formulaire InfosClients
    Ben non justement, un update modifie une table et non un formulaire... InfoClient c'est un formulaire ou une table ou les 2 ?

    Après un update pour que la mise à jour remonte au formulaire il faut faire me.requery - si le champ modifié est affiché dans le formulaire - mais dans ce cas il serait plus simple de modifier directement le champ...

    Courage

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 52
    Par défaut
    Oula

    Alors pour clarifier, j'ai une table InfosClients (qui contient un champ Email envoyé le) mais l'utilisateur final n'aura accès à ces données qu'au travers d'un formulaire que se nomme aussi infosclients (qui reprend la plupart des champs de la table, y compris le champ email envoyé le).

    Mon but? J'ai fait une automatisation Outlook qui envoie les mails à toute ma base, via un "bouton" sur le formulaire. J'ai un autre bouton, qui permet de mettre à jour (et c'est bien mettre à jour me semble!) le champ Email envoyé le. Tout ceci pour éviter le spam bien sur. Donc c'est le champ entier que je veux modifier que ce soit sur le formulaire ou sur la table.

    Ensuite, j'ai fais une requête, pour mettre en évidence des clients tels que ceux ayant des produits spécifiques. Cette requète est mise en forme par un autre formulaire (soucis d'accès aux données géré par un formulaire "intouchable"). Et donc je veux que sur ce formulaire je puisse mettre un "bouton" qui me permette de relancer à la fois une automation Outlook et une mise à jour du champ, mais qui se limite aux enregistrements contenu dans la dite requète.

    J'espère que c'est assez clair

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bon pour le problème du champ qui ne se met pas à jour c'est probablement parce qu'il est en cours d'édition à l'écran. Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If MsgBox("Mettre à jour du champ [Email envoyé le] ?", vbYesNo, "Vous souhaitez...") = vbYes Then 
      me.refresh 'libère la ligne en cours de saisie
      DoCmd.RunSQL "UPDATE InfosClients SET InfosCLients.[Email envoyé le] = Date();"
      MsgBox "OK..."
    end if
    Pour la fenêtre filtrée c'est pareil sauf qu'il faut recopier le filtre dans la requête. Avec un peu de chance ton formulaire est filtré grâce à Me.filter et alors la requête est :
    DoCmd.RunSQL "UPDATE InfosClients SET InfosCLients.[Email envoyé le] = Date where " & me.filter

    Amha il devrait être possible de tout faire d'une même fenêtre qui serait filtrée ou non au choix de l'utilisateur

    J'ai pas compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tout ceci pour éviter le spam bien sur.
    mais c'est pas grave

  7. #7
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 52
    Par défaut
    J'vais test demain le Me.refresh...

    Le champ E mail envoyé le, me renseigne sur la date d'envoi du dernier e mail et m'empêche donc de spammer mes contacts.

    Encore merci pour te réponse. Je met résolu car j'ai tout ce qu'il me faut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Mise à jour d'un champs date
    Par obydissonn dans le forum Oracle
    Réponses: 2
    Dernier message: 19/07/2013, 10h55
  2. Problème de mise à jour d'un champ date
    Par aloha dans le forum JDBC
    Réponses: 2
    Dernier message: 17/04/2008, 12h09
  3. mise à jour d'un champ date
    Par Flagny dans le forum Access
    Réponses: 11
    Dernier message: 14/11/2005, 07h30
  4. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo