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 :

Syntaxe requête SQL avec variables Date [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 56
    Points : 48
    Points
    48
    Par défaut Syntaxe requête SQL avec variables Date
    Bonjour,

    Je suis en train de faire une fonction VBA qui me retourne le nombre d'heures entre 2 dates (en supprimant les week-end et jours fériés) pour ensuite insérer ce nombre dans ma table TEST.

    Pour cela, j'ai une table Jours_travail où j'ai toutes les dates de 2012 à 2017 et à coté une colonne qui me dit si c'est un jour travaillé ou non. Voici la composition de ma table Jours_travail:

    Jour (type date) | Jours_travailles (type text)

    01/01/2012 | Non

    02/02/2012 | Oui

    Je sais que j'ai un problème de syntaxe dans ma requête Nb_jours déjà (mais j'arrive pas à l'écrire correctement)

    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
    24
    25
    26
    27
    28
    29
    Function Resultat(Date1 As Date, Date2 As Date) As Integer
     
    Dim DifDate1 As Date, DifDate2 As Date
    Dim Nb_jours As Integer 'Nombre de jours ouvrés entre Date1 et Date2 (récupération du résultat de la requête)
    Dim Dif_heures As Integer
     
    DifDate1 = 0
    DifDate2 = 0
    Dif_heures = 0
    Nb_jours = 0
     
    'Nombre de jours se trouvant entre les 2 dates et multiplication de ce nombre par 10 pour avoir le nombre d'heures travaillées entre les 2 dates
    Nb_jours = "SELECT COUNT(*) FROM Jours_travail WHERE '" & Date1 & "' < Jour AND '" & Date2 & "' > Jour AND Jours_tavailles = 'Oui'"
    Dif_heures = Nb_jours * 10
     
    'Calculer le nbre d'heures travaillées pour Date1 et Date2
    DifDate1 = DateDiff("h", Hour(Date1), 18) 'Nbr d'heures travaillées le jour de Date1
    DifDate2 = DateDiff("h", 8, Hour(Date2)) 'Nbr d'heures travaillées le jour de Date2
     
    'Addition des différents calculs
    Resultat = Nb_jours + DifDate1 + DifDate2
     
    End Function
     
    Sub TEST2()
     
    DoCmd.RunSQL ("UPDATE TEST SET `Mes résultats`= Resultat(Demand_Launch_date_Valid, Acknowledge_date_valid);")
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Quand tu compares à une date, tu dois encadrer celle-ci de croisillons « # ».

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb_jours = "SELECT COUNT(*) FROM Jours_travail WHERE '" & Date1 & "' < Jour AND '" & Date2 & "' > Jour AND Jours_tavailles = 'Oui'"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb_jours = "SELECT COUNT(*) FROM Jours_travail WHERE #" & Date1 & "# < Jour AND #" & Date2 & "# > Jour AND Jours_tavailles = 'Oui'"
    De plus, selon le contexte, il faut parfois présenter la date dans le format américain.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Vous pouvez aussi jeter un oeil à la fonction BuildCriteria

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 56
    Points : 48
    Points
    48
    Par défaut
    Merci je vais voir du côté de BuildCriteria.

    Par contre j'ai remanié ma requête et j'ai toujours une erreur d'incompatibilité de type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb_jours = "SELECT COUNT(*) FROM Jours_travail WHERE #" & DateValue(Date1) & "# < Jour AND #" & DateValue(Date2) & "# > Jour AND Jours_tavailles = 'Oui'"

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 095
    Points : 5 211
    Points
    5 211
    Par défaut
    Bonjour,

    J'avoue que je n'utilise pas non plus les # et ça marche bien avec cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...where jour>cdate('" & MaDate & "')...
    PS :
    - ça irait plus vite si jours_travailles était un booléen
    - s'il s'agit de salariés en France ça va être difficile de les faire travailler légalement 10h/j...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

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

Discussions similaires

  1. Syntaxe pour requête SQL avec variables
    Par molibri dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2010, 14h50
  2. Réponses: 1
    Dernier message: 03/04/2009, 10h09
  3. [MySQL] Requête SQL avec variable
    Par kate59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 14h12
  4. Requête SQL avec variables
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 36
    Dernier message: 12/07/2007, 12h35
  5. Problème avec requête SQL avec variables
    Par harry25 dans le forum ASP
    Réponses: 1
    Dernier message: 03/01/2007, 03h41

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