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 :

Fonction qui ne renvoie rien


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Points : 81
    Points
    81
    Par défaut Fonction qui ne renvoie rien
    Bonjour,

    Bon j'ai une fonction qui ne veut rien renvoyer, et je ne sais pas pourquoi... J'ai essayé de déclarer cette fonction en tant qu'entier, réel ou chaîne mais rien n'y fait, elle me renvoie 0 ou Null.

    Pourtant, le MsgBox juste avant le retour de valeur m'affiche bien la valeur qu'il faut!

    Voici le code :

    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
    Function recherche_code_premier_sd(code_dp, code_d) As Integer
         Dim bd As Database
         Dim rs As DAO.Recordset
        Set bd = CurrentDb()
        Set rs = bd.OpenRecordset("DOSSIER")
     
        If (code_dp = "" Or IsNull(code_dp)) Then
            MsgBox code_d 'là, ça m'affiche bien le code que ça doit renvoyer
            recherche_code_premier_sd = code_d 'je renvoie la valeur, mais ça ne marche pas, rien n'est renvoyé!
        Else
            rs.MoveFirst
            Do While rs.Fields("code_dossier") <> code_dp
                rs.MoveNext
            Loop
            recherche_code_premier_sd rs.Fields("code_dossier_parent"), rs.Fields("code_dossier")
        End If
    End Function
    Pourquoi ça ne fonctionne pas?
    Comment faire?

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 166
    Points : 81
    Points
    81
    Par défaut
    Bon bah en j'ai réussi à résoudre mon problème

    En fait la fonction ne pouvait rien renvoyer, car elle était récursive (dans cette fonction je fais appel à elle-même plusieurs fois).

    J'ai donc changé cette fonction en procédure, qui a un paramètre de sortie : le dossier racine (ce que je cherche depuis le début et que la fonction ne voulait pas renvoyer).

    Ensuite, la fonction qui fait appel à cette procédure renvoie le code du dossier racine qu'elle reçoit de la procédure en paramêtre de sortie.

    Ca va c'est simple le VB!

    Bref je poste le code pour que ça soit plus clair :
    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
     
    Function recherche_code_dossier_racine(code_dp, code_d) As Integer 'fonction qui appelle la procédure
        Call recherche_code_dossier_racine_procedure(code_dp, code_d, code_dossier_racine)
        recherche_code_dossier_racine = code_dossier_racine
    End Function
     
    Public Sub recherche_code_dossier_racine_procedure(code_dp, code_d, code_dossier_racine)
        Dim bd As Database
        Dim rs As DAO.Recordset
        Set bd = CurrentDb()
        Set rs = bd.OpenRecordset("DOSSIER")
     
        If code_dp <> "" Then 'si le code_dossier_parent n'est pas null, on cherche si le sous-dossier a un dossier parent
            code_dp = Val(code_dp)
            'MsgBox code_dp
            rs.MoveFirst
            Do While rs.Fields("code_dossier") <> code_dp
                'MsgBox code_dp & " -> " & rs.Fields("code_dossier")
                rs.MoveNext 'parcours de la table DOSSIER afin de trouver à quel dossier correspond le code du dossier parent
            Loop
            code_dp = rs.Fields("code_dossier_parent")
            code_d = rs.Fields("code_dossier")
     
            Call recherche_code_dossier_racine_procedure(code_dp, code_d, code_dossier_racine) 'on appel la procédure pour rechercher le dossier parent
        Else 'sinon, on renvoie le code du dossier racine
            code_dossier_racine = code_d
        End If
    End Sub

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

Discussions similaires

  1. Fonction dans une boucle qui ne renvoie rien
    Par blueice dans le forum Langage
    Réponses: 9
    Dernier message: 16/08/2008, 08h46
  2. fonction qui ne retourne rien, comment c'est possible ?
    Par lOeil dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/06/2007, 00h51
  3. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 09h41
  4. Fonction qui ne renvoie rien
    Par philippef dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 18h12
  5. [PostgreSql] requête simple qui ne renvoie rien ?
    Par tuxout dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 14h06

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