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 : 264
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 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.

    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+
    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.

  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, 09h34
  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, 14h29
  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, 17h12
  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, 16h46
  5. Réponses: 8
    Dernier message: 01/03/2005, 16h01

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