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

VBA Access Discussion :

Format date requête de mise à jour


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut Format date requête de mise à jour
    Bonjour,

    J'effectue une mise à jour des champs d'une de mes tables grace a une requete rédiger en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CmB_RechercheMotCle_Click()
        Dim Num As String
        Dim NouvelleValeur As String
        Dim i As Variant
        Dim Requete As String
     
     
        If Me.DateCloture.Value > "" Then
        NouvelleValeur = Me.DateCloture.Value
            Call MiseAJour("DateCloture", NouvelleValeur)
        End If
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Function MiseAJour(ChampCible As String, Valeur As String)
    Dim Num, Requete As String
    Dim i As Variant
        For Each i In Me![Lst_Results].ItemsSelected
            DoCmd.SetWarnings False
            Num = Lst_Results.Column(0, i)
     
            Requete = "UPDATE T_Bilan SET " & ChampCible & " = " & Valeur & " WHERE" & _
            "(((T_Bilan.NumBilan)=" & Me.Lst_Results.Column(0, i) & ")); "
            DoCmd.RunSQL (Requete)
            DoCmd.SetWarnings True
        Next i
     
    End Function
    Mon problème est que lorsque je met à jour un champ contenant une date (DateCloture) , cela ne correspond pas à la valeur que j'avais préciser

    J'ai essayé avec mon champ DateCloture au format texte : il me renvoie un nombre à virgule. Avec DateCloture au format Date : il me renvoie systématiquement 31/12/1899 !!

    Merci de votre aide !

  2. #2
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Fait une recherche sur le Format Date

  3. #3
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    Je suit les conseils de la FAQ, mon champ date est de type "Date/Heure" avec un format "Date,abregé"

    Le champ dans lequel je précise ma valeur à également les même attributs !

    Il me renvoit toujours 31/12/1899

    ???

  4. #4
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Me.DateCloture.Value > "" Then
        NouvelleValeur = Me.DateCloture.Value
    A quoi correspond le .Value
    en principe apres .Value on donne une valeur

  5. #5
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    Je le mettais pour préciser la valeur de "NouvelleValeur"
    Si je l'enlève cela ne change rien !

  6. #6
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Je suis pas un as en vba mais je verrais plus sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.DateCloture > "" Then
       Me.NouvelValeur.Value= Me.DateCloture 
            Call MiseAJour("DateCloture", NouvelleValeur)
        End If
    et ta nouvelleValeur est bien au format date

  7. #7
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    C'est probablement dû au format date attendu en SQL non utilisé ici, comme maintes fois évoqué sur le forum.

    Petite explication:
    Dans ton code actuel, l'instruction SQL générée sera quelque chose du genre:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SET DateCloture = 10/02/2007 ....


    Le moteur interprète 10/2 = 5 / 2007 = 0.00...qq chose ... soit une fraction de jour... d'où la date obtenue en 1899.
    (Rappelons qu'une date est stockée sous forme de nombre de jours écoulé depuis la date de référence - 31/12/1899 il me semble).

    La solution:
    L'idéal serait de revoir la procédure MiseAJour pour qu'elle traite spécifiquement les champs de type texte ou date,...

    Pour faire simple dans ton cas, tu peux simplement faire l'appel ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim NouvelleValeur As Date
    '...
    Call MiseAJour("DateCloture", "#" & Format$(NouvelleValeur,"mm/dd/yyyy" ) & "#")
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  8. #8
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    Ok ca fonctionne très bien

    Merci beaucoup pour ton aide

  9. #9
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par e040098k
    Ok ca fonctionne très bien

    Merci beaucoup pour ton aide
    De rien.
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

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

Discussions similaires

  1. [AC-2003] Problème de format de date requête de mise à jour
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/04/2014, 10h32
  2. Requête de mise à jour
    Par Deejoh dans le forum Access
    Réponses: 4
    Dernier message: 24/05/2006, 12h02
  3. Réponses: 2
    Dernier message: 10/03/2006, 13h55
  4. Réponses: 6
    Dernier message: 29/11/2005, 19h36
  5. Réponses: 1
    Dernier message: 25/11/2005, 11h43

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