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

Requêtes et SQL. Discussion :

#ERREUR sur la requête calcul d'heures [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut #ERREUR sur la requête calcul d'heures
    Bonjour, je voudrait faire le calcul d'heures supplémentaires et le nombres d'heures d'absences à partir d'une requête. Mais je n'arrive pas au résultat souhaité.
    voici ma requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SelectForPG.[Heure total], IIf([Heure total]<#12/30/1899 8:0:0#,Format(#12/30/1899 8:0:0#-[Heure total],"hh:nn:ss")," ") AS Absences, IIf([Heure total]>[LogDate]+#12/30/1899 8:0:0#,Format([Heure total]-#12/30/1899 8:0:0#,"hh:nn:ss")," ") AS [Heure Suplémentaires]
    FROM SelectForPG;

    et la pièce jointe correspond au résultat retourné par ma requête.
    Nom : CaptureBase.PNG
Affichages : 273
Taille : 16,0 Ko

    Pourriez-vous m'aider à corriger cette requête ou m'indiquer une autre méthode pour arriver à mon résultat s'il vous plait?
    Et merci d'avance pour vos réponses.

  2. #2
    Modérateur

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

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

    Vérifie que HeureTotal est bien de type date/heure.

    Ensuite essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(TimeSerial(Hour([HeureTotal]), Minute([HeureTotal]), Seconde([HeureTotal]))<TimeSerial(8, 0, 0))
    remplace les calculs sur les date par DateAdd(). Voir l'aide pour les paramètres de DateAdd.

    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci marot_r pour ta réponse je vais le testé tout de suite

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    ça me renvoie le message "la syntaxe de l'expression entrée n'est pas valide" . et pour la fonction DATEADD je crois qu'elle permet d' ajouter un intervalle de temps à une date , et moi je veux soustraire des heures pour avoir la durée entre les deux. j'ai essayer avec diffdate et j'ai comme résultat "!fonct" à la place de "#erreur"

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    C'est un peut tard mais je résolue mon problème, si ça peut servir à ceux qui rencontreront le même problème que moi voici une solution:

    j'ai trouver une fonction en cherchant sur internet . on l'intègre dans un module

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Public Function TimeDuration(dtmFrom As Date, dtmTo As Date, _
                Optional blnShowdays As Boolean = False) As String
     
        ' Returns duration between two date/time values
        ' in format hh:nn:ss, or d:hh:nn:ss if optional
        ' blnShowDays argument is True.
     
        ' If 'time values' only passed into function and
        ' 'from' time is later than or equal to 'to' time, assumed that
        ' this relates to a 'shift' spanning midnight and one day
        ' is therefore subtracted from 'from' time
     
        Dim dtmTime As Date
        Dim lngDays As Long
        Dim strDays As String
        Dim strHours As String
     
        ' subtract one day from 'from' time if later than or same as 'to' time
        If dtmTo <= dtmFrom Then
            If Int(dtmFrom) + Int(dtmTo) = 0 Then
                dtmFrom = dtmFrom - 1
            End If
        End If
     
        ' get duration as date time data type
        dtmTime = dtmTo - dtmFrom
     
        ' get whole days
        lngDays = Int(dtmTime)
        strDays = CStr(lngDays)
        ' get hours
        strHours = Format(dtmTime, "hh")
     
        If blnShowdays Then
            TimeDuration = lngDays & ":" & strHours & Format(dtmTime, ":nn:ss")
        Else
            TimeDuration = Format((Val(strDays) * 24) + Val(strHours), "00") & _
                Format(dtmTime, ":nn:ss")
        End If
     
    End Function

    et dans ma requette access je fait appelle au module pour le calcul d'heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heure Suplémentaires: VraiFaux([Heure total]>#08:00:00#;TimeDuration(#08:00:00#;[Heure total]);" 00:00:00")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Absences: VraiFaux([Heure total]<#08:00:00#;TimeDuration([Heure total];#08:00:00#);" 00:00:00")
    et j'obtient le résultat voulu

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/01/2020, 10h34
  2. [SQL] Erreur sur une requète avec un Like
    Par heruwenli dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2007, 15h29
  3. [VBA] Erreur sur une requête avec un opérateur
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2006, 18h12
  4. Erreur sur ma requête à son ouverture
    Par ghan77 dans le forum Bases de données
    Réponses: 7
    Dernier message: 23/01/2006, 17h46
  5. Réponses: 8
    Dernier message: 01/03/2005, 17h01

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