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

IHM Discussion :

Mettre date du jour automatiquement dans table


Sujet :

IHM

  1. #1
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut Mettre date du jour automatiquement dans table
    Bonjour,

    Je voudrais lorsque je clique sur le bouton quittez de ma base que la date du jour s'enregistre dans une table.

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TblDernièreDate.Dernièredate = Date
    Dois je passer par un code SQL de type ajout ?

    Merci d'avance

    Marcopololo

  2. #2
    Membre habitué
    Avatar de DamKre
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2007
    Messages : 489
    Points : 183
    Points
    183
    Par défaut
    Bonjour.

    Dans ta table, tu veux à chaque fois ajouter la date au moment de quitter, ou simplement modifier la date ?
    DamKre
    Plus je découvre, plus je me rends compte que je ne sais rien...

  3. #3
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Non, je vais utiliser cette table pour vérifier qu'il n'y a pas un changement d'année et pour lancer une procédure de mise à jour d'une table.

    Donc à chaque fois que je quitte la base, je stocke la date du jour (que je restreindrai à l'année).
    Ensuite je comparerai l'année de ma table avec la date qui va être enregistrée.

    Si elle est différente, je lance une procédure de mise à jour

    Sinon je remplace la date actuelle par la nouvelle.

    Soit j'utilise la fonction insert to en SQL, soit un recordset (si cela fonctionne).

    Marcopololo

    Voila ce que l'ai mis mais je n'enregistre rien dans ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim SQL As String
     
                SQL = "INSERT INTO TblDernièreDate ( Dernièredate ) "
                SQL = SQL & "SELECT TblDernièreDate.Dernièredate "
                SQL = SQL & "FROM TblDernièreDate "
                SQL = SQL & "WHERE (((TblDernièreDate.Dernièredate)=Date())); "
                DoCmd.RunSQL SQL

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    docmd.setwarnings false
    docmd.runsql "UPDATE TblDernièreDate SET TblDernièreDate.Dernièredate = Date();", true
    docmd.setwarnings true
    Attention : il faut qu'il existe un enregistrement dans ta table, sinon pas de mise à jour

    A+
    Gabout

  5. #5
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Merci Gabout,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim CompDate As String
     
     
               CompDate = "TblDernièreDate.Dernièredate"
     
               If CompDate = Date Then
               MsgBox ("pas de changement date")
                Exit Sub
     
                Else
                MsgBox ("changement date")
                DoCmd.SetWarnings False
                DoCmd.RunSQL "UPDATE TblDernièreDate SET TblDernièreDate.Dernièredate = Date();", True
                DoCmd.SetWarnings True
    Par contre j'ai un petit soucis car à chaque fois je passe par la Msgbox changement de date, même si la date est identique.
    Faut il définir le format pour ne pas prendre en compte les hh, mm, ss ?

    Marcopololo

  6. #6
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Hello,

    Soit un peu plus précis sur "ton petit soucis"... cela ne nous aide pas beaucoup. Que se passe-t-il ?

    Par ailleurs, j'aurais plutôt écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If DLookup("[Dernièredate]", "TblDernièreDate") = Date Then
       MsgBox ("pas de changement date")
    Else
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE TblDernièreDate SET TblDernièreDate.Dernièredate = Date();", True
        DoCmd.SetWarnings True
        MsgBox ("changement date")
    End If
    Ce bout de code fonctionne, quel que soit le format de la date.

    A+
    Gabout

  7. #7
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Merci Gabout,

    Tu as tout compris.
    Par contre faut il toujours utiliser la fonction dlookup dans le cas d'un if ?
    Et dernière petite question, peut on adjoindre à l'instruction date la précision formatdate pour faire une comparaison uniquement sur l'année ?

    Encore merci

    Marcopololo

  8. #8
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Dlookup est une fonction de regroupement de domaine voir l'excellent tutoriel de Starec ici.
    Pas de liaison directe avec le if. Je pense que le puristes auraient pu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim LaDate
    LaDate = DLookup("[Dernièredate]", "TblDernièreDate")
    If LaDate = Date Then
       MsgBox ("pas de changement date")
    Else
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE TblDernièreDate SET TblDernièreDate.Dernièredate = Date();", True
        DoCmd.SetWarnings True
        MsgBox ("changement date")
    End If
    Si tu veux aller plus loin, étudie la syntaxe de Nz afin d'éviter des mauvaises surprises si le champ que tu lis par la fonction Dlookup est vide

    Enfin, si tu ne veux baser ton critère uniquement sur l'année, tu pourrais écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim LaDate
    LaDate = DLookup("[Dernièredate]", "TblDernièreDate")
    If year(LaDate) = year(Date) Then
       MsgBox ("pas de changement date")
    Else
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE TblDernièreDate SET TblDernièreDate.Dernièredate = Date();", True
        DoCmd.SetWarnings True
        MsgBox ("changement date")
    End If
    Gabout

  9. #9
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Merci Gabout,

    Je vais lire ce tuto.

    encore merci. Le code est parfait

    MArcopololo

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

Discussions similaires

  1. [ODBC] Mettre date du jour dans le champ date lors de la modification
    Par polux31 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/05/2011, 17h34
  2. Mettre date du jour dans une table
    Par amely78 dans le forum Access
    Réponses: 4
    Dernier message: 27/12/2010, 11h29
  3. mise à jour automatique de table de jointure
    Par bringer dans le forum SQLite
    Réponses: 5
    Dernier message: 09/06/2009, 13h16
  4. [Dates] Mettre date du jour dans une textbox
    Par Le Rebel dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2006, 07h27
  5. Date du jour automatique
    Par blondin01 dans le forum Access
    Réponses: 15
    Dernier message: 04/11/2005, 17h54

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