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 :

Aide concernant les date vba Access


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autriche

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Aide concernant les date vba Access
    bonjour a tous.
    J'ai écrit une fonction qui est censée me renvoyer le service d'affectation (numérique) d'un équipement donné durant une daté donnée

    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
    22
    23
    Public Function ServiceDate(VarNumero As Long, VarDate As Date) As Long
     
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sSQL As String
     
    sSQL = " SELECT tblMouvementsDetails.NumInvFk, tblMouvements.RefServiceFk, tblMouvementsDetails.DateMouvement" _
          & " FROM tblMouvements INNER JOIN ((SELECT tblMouvementsDetails.NumInvFk, Max(DateMouvement) AS MaxDate FROM tblMouvementsDetails GROUP BY NumInvFk) AS X" _
          & " INNER JOIN tblMouvementsDetails ON (x.MaxDate = tblMouvementsDetails.DateMouvement) AND (X.NumInvFk = tblMouvementsDetails.NumInvFk)) ON tblMouvements.RefMouvement = tblMouvementsDetails.RefMouvementFk" _
          & " WHERE X.MaxDate <= Cdate('" & VarDate & "') and X.NumInfFk=" & VarNumero
     
    Set db = Application.CurrentDb
    Set rs = db.OpenRecordset(sSQL, dbOpenDynaset)
     
    ServiceDate = rs("RefServiceFk")
     
    rs.Close
    db.Close
     
    Set db = Nothing
    Set rs = Nothing
     
    End Function
    La requête est faite sur trois tables.
    Le problème est que la fonction rend zéro résultat considérant que la date est le 30/12/1899.

    quelqu'un peut aider ?

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour toufiketc,

    Problème d'affichage régional des dates. En VBA la date doit être au format US. Voici une fonction à ajouter dans un module qui fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function fuUSDate(daDate As Date) As Date
    On Error GoTo Err_fuUSDate
     
        fuUSDate = DatePart("m", daDate) & "-" & DatePart("d", daDate) & "-" & DatePart("yyyy", daDate)
     
    Exit_Err_fuUSDate:
        Exit Function
     
    Err_fuUSDate:
        MsgBox "Erreur " & Err.Number & Chr(13) & Chr(13) & Err.Description
        Resume Exit_Err_fuUSDate
    End Function
    Et ton WHERE clause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & " WHERE X.MaxDate <=#" & fuUSDate(VarDate) & "# and X.NumInfFk=" & VarNumero)
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autriche

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    rien a faire la fonction renvoie 00:00:00 pour toutes les dates

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Essaies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE X.MaxDate <= #" & format(VarDate,'yyyy/mm/dd') & "#) and X.NumInfFk=" & VarNumero
    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Aussi le SQL de Access peut être assez déroutant et l'écrire à la main un exercice assez frustrant.
    Je te suggère d'utiliser l'éditeur de requête de Access et d'écrire ta requête là.
    Une fois qu'elle fonctionne, bascule l'affichage sur SQL (en haut à gauche) pour voir le SQL généré par Access et récupère le dans ton code.

    Et perso, avec l'éditeur de SQL, assez misérable, de Access j'évite les sous-requêtes.
    Je préfère les faire une requête séparée et faire une jointure ou utiliser DFirst() ou les autres fonctions de domaine.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autriche

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    c'est ce que je fais mais sans success.
    du coup je me dis que peut être a cause des jointures justement.
    alors je viens de revoir la conception de mes tables (j'ai supprimé la date de la table mouvementsdetails estimant qu'il ya redondance inutile et j'ai placé ce champs dans la table mouvements c'est plus logique non ?).

    Table tblMouvements :table des mouvements : inclut

    RefMouvement clé primaire
    DteMouvement : date de mouvement
    RefServiceFk : Service d'affectation (clé étrangère)
    RefTypeMouvement : Type mouvement (clé etrangere)

    Table MouvementsDetails : détails ds mouvements contient

    RefDetailMouvement : Clé primaire
    NumInvFk : Désignation équipement clé étrangère
    RefMouvementFk : référence a la table mouvements clé étrangère

    je veux ecrire une requête parametree sans jointure (avec des clauses WHERE par exemple) qui renvoie :

    NumInvFk
    DteMouvement) (critere
    RefServiceFk (critere)
    RefTypeMouvementFk

Discussions similaires

  1. weekend et jours fériés dans les dates VBA
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/05/2018, 20h43
  2. [VBA Excel] Aide concernant les conditions
    Par Kivabien dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/11/2016, 14h00
  3. Aide pour Operateur avec VBA access
    Par achevar dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/11/2008, 15h37
  4. J'ai besoin de votre aide "concernant les scripts"
    Par lotfi50 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 29/09/2008, 23h34
  5. Besoin d'aide pour les dates
    Par Aurore_atmo dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/07/2006, 15h37

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