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

  1. #1
    Candidat au Club
    Update d'un champs date produit une date en désordre
    Bonjour à tous et déjà merci à ceux qui vont lire la suite,

    J'ai une table PayOut qui reprend notamment un champs date/heure (PayOutDate) que j'affiche en date abrégée.
    J'ai un formulaire (continu) qui reprend un contrôle (nommé PayOutDate) qui reprend l'information du champs PayOutDate date de la table PayOut

    Dans l’événement sur click d'un des contrôle de ce formulaire,
    Je stocke la valeur du contrôle date dans une variable qui est dimensionnée "date"
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    Dim monpaydate As Date
    monpaydate = Me.PayOutDate.Value



    ...
    Je passe cette valeur à une sous procédure via
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Call ecrituredate(monpaydate, monndoc)



    La procédure est
    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
    16
    17
    18
    19
    20
    21
    Public Sub ecrituredate(monpaydate As Date, monndoc As String)
    MsgBox monpaydate
     
     
    Dim monsql As String
     
    monsql = monsql & "  UPDATE EcritureWebiBobTmp"
    monsql = monsql & "  SET EcritureWebiBobTmp.NDoc = " & monndoc
    monsql = monsql & "  , EcritureWebiBobTmp.[Date] = #" & monpaydate & "#"
     
     
    Debug.Print monsql
     
     
        DoCmd.SetWarnings (False)
        DoCmd.RunSQL monsql
        DoCmd.SetWarnings (True)
     
     
     
    End Sub


    qui tente donc de faire la mise à jour d'un champs date de l'ensemble des enregistrements d'une autre table... et le résultat n'est pas celui attendu

    Dans la table de départ j'ai 31-07-20, dans le formulaire sur cette table j'ai 31-07-20, à l'arrivée dans la sous procédure le msgbox qui contrôle m'annonce recevoir 31-07-20 mais dans la table d'arrivée, j'ai du 20-07-31 (reconnu dans le calendrier 20/07/2031)

    Voici la requete "mise à jour" qui est construite (resutat de debug.print)
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    UPDATE EcritureWebiBobTmp  SET EcritureWebiBobTmp.NDoc = 200048  , EcritureWebiBobTmp.[Date] = #31-07-20#


    Mes recherches m’amène vers un problème de format nationaux, européen coté windows et côté des tables mais américain dans VBA

    Je pourrais peut être résoudre ça en bricolant mais si il y a quelque chose d'élégant ma fois je suis preneur...

    Cordialement

  2. #2
    Membre expert
    Bonjour,
    Avec mondoc qui est un string et ta date, il faut la requete :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    monsql = monsql & "  UPDATE EcritureWebiBobTmp"
    monsql = monsql & "  SET NDoc = '" & monndoc & "'"
    monsql = monsql & "  , [Date] = #" & format(monpaydate, "mm/dd/yyyy") & "#"


    la valeur d'une chaine doit être encadrée par des ' ou des "
    la valeur de la date, encadrée par des #, doit être en format américain
    il est déconseillé de nommer une colonne de table Date !

    Cdlt
    "Always look at the bright side of life." Monty Python.

  3. #3
    Candidat au Club
    Effectivement, le problème est résolu proprement
    Grand merci micniv

    Pour ce qui est des ' autour de monndoc, ça fonctionnait sans, je suppose par hasard jusqu'ici car toute la chaine de monndoc est systématiquement composée de chiffres seulement.
    J'ai bénéficié à l'insu de mon plein grès d'une "tolérance" de ACCESS

    Pour ce qui est des #, ça ne suffisait pas... "Format" est ma nouvelle amie. Je la mets dans ma boite à outils.

    Pour le nom de champs [Date] qui confuse avec des mots réservés... je suis bien d'accord et j'essaye de m'y tenir. Dans le cas présent, la table est "temporaire" et va servir un instant à un export-import dans un logiciel comptable qui "attend" cet intitulé de colonne. Un mappage des nom de champs est possible dans le logiciel comptable mais doit être appelé (manuellement) à chaque import.

    Cordialement

###raw>template_hook.ano_emploi###