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

Access Discussion :

Problème pour appeler une fonction dans une requête


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Problème pour appeler une fonction dans une requête
    Bonjour,


    Voilà, je me suis inspiré d’une fonction permettant de calculer le nombre de jours ouvrables entre 2 dates, mais, lorsque je l’adapte à ma requête, elle me renvoie #erreur dans mon champ.
    Quelqu’un peut il me corriger ce qui ne va pas ?
    Je débute dans les fonctions et je souhaite comme vous, progresser.
    Merci de votre aide
    Description :
    5 champs dans une requête :
    [nom];[prénom];[date ar];[date];[différence]=> qui me calcul le nombre de jours écoulés entre [date ar]=>qui est toujours antérieur à la date du jour et date

    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
    Function NbreJoursOuvrables(ByVal dhDateDébut As Date, ByVal dhDateFin As Date) As Integer
    ' Objectif: Compte le nombre de jours ouvrés entre deux dates (exclusion des weekends/jours fériés).
    ' à l 'aide d'une table des jours fériés.
    ' Paramètres en entrée:
    dhDateDébut = [Date AR]
    '         Date de départ de l'intervalle de temps désiré au format européen entre guillemets
    dhDateFin = Date
    '         Date de fin de l'intervalle de temps désiré au format européen entre guillemets.
    '      (les dates seront inversées si nécessaire)
    Dim intDiffJours As Integer
    Dim intSoustraction As Integer
    Dim rst As Recordset, strRubrique As String
    Set rst = CurrentDb.OpenRecordset("tblJoursFériés", DAO.dbOpenDynaset)
    strRubrique = "DateJourFérié"
    ' Test de validité des dates
    If IsNull(dhDateDébut) Or IsNull(dhDateFin) Then
       NombreJoursOuvrables = 0
       Exit Function
    ElseIf Not IsDate(dhDateDébut) Or Not IsDate(dhDateFin) Then
       NombreJoursOuvrables = 0
       Exit Function
    ElseIf dhDateDébut > dhDateFin Then
    ' Inversion des dates si nécessaire.
       Dim dhTemp As Date
       dhTemp = dhDateDébut
       dhDateDébut = dhDateFin
       dhDateFin = dhTemp
    End If
    ' Calcul de la différence en jours entre les deux dates
    intDiffJours = dhDateFin - dhDateDébut + 1
    ' Soustraction des samedis et dimanches. Algorithme: Calcul du nombre de semaines
    ' entre les deux dates et multiplication de la différence par 2.
    intSoustraction = (DateDiff("ww", dhDateDébut, dhDateFin) * 2)
    ' Il faut maintenant soustraire le total des jours fériés indiqués par la table
    intSoustraction = intSoustraction + CompteJoursFeriés(rst, strRubrique, _
    dhDateDébut, dhDateFin)
    NbreJoursOuvrablesTbl = intDiffJours - intSoustraction
    End Function
    Mon champ crée faisant appel à ma fonction :
    jours: NbreJoursOuvrables([Date Ar];[date])

  2. #2
    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
    La fonction est bien dans un module ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Je n'avais effectivement pas mis cette fonction dans un module.
    Je viens de le faire, mais j'ai le message :
    fonction nbrejoursouvrables non définie dans l'expression
    2 questions :
    par rapport à mon besoin, mon code est-il bon ?
    Comment résoudre ce problème avant de me lancer dans le lien que tu m'as envoyé ?
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut,

    Tu peux la tester dans la fenêtre de debugage,

    si elle fonctionne,
    il te faut prévoir le cas des valeurs nulle pour dhDateDébut et dhDateFin.

    Sinon comme l'a dit Tofalu vérifier que la fonction public est dans un module indépendant.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir,

    Ta fonction doit être déclarée publique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public function NbreJoursOuvrables( ...
    ...
    End function
    Ensuite, dans ton appel de fonction, si [Date] représente la date du jour, il faut l'écrire Date, sans crochets.

    Cordialement,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Comme le dit pgz,

    le message :
    fonction nbrejoursouvrables non définie dans l'expression

    Indique qu'il ne reconnait pas ta fonction:
    Vérifie l'orthographe,
    verifie qu'elle est public (Public Function ...)
    verifie qu'elle est dans un module indépendant
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    petite remarque ta fonction ne prend pas en compte les jours fériés
    Elle est pas belle la vie ?

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Résolu
    Merci pour ces précieux conseils, ma fonction marche

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

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Type d'argument pour appel de fonction dans une DLL
    Par Lio590 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 06/07/2011, 16h28
  3. Problème d'appel de fichiers dans une fonction
    Par guilome35 dans le forum Tkinter
    Réponses: 1
    Dernier message: 19/06/2010, 08h17
  4. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  5. Appeler une fonction dans une fonction
    Par bryanstaubin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2007, 09h39

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