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

VB.NET Discussion :

[VB.NET 2005] Erreur imcompréhensible à cause d'une fonction


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut [VB.NET 2005] Erreur imcompréhensible à cause d'une fonction
    BOnjour,

    voici ma fonction :
    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
     Public Function Execute() As DataView
            Try
                Dim SourceConnect As String = "Provider=" & m_Provider & ";" & "Data Source=" & m_Mdb
                SourceOle = New OleDbConnection(SourceConnect)
     
                Select Case SourceOle.State
                    Case ConnectionState.Closed
                        SourceOle.Open()
                End Select
     
                Dim DataA As New OleDbDataAdapter(m_SQL, SourceOle)
                Dim DataS As New DataSet
                DataA.Fill(DataS, "Obj")
     
                Return DataS.Tables("obj").DefaultView
     
            Catch ex As Exception
                MsgBox("Erreur de transaction avec la Base : " & ex.Message)
            Finally
                If m_Open = False And SourceOle.State = ConnectionState.Open Then SourceOle.Close()
            End Try
        End Function
    EN vb.net 2003 pas d'erreur ! lol mais en VB.NET 2005 voici l'erreur que je comprends pas :
    La fonction 'Execute' ne retourne pas une valeur pour tous les chemins de code. Une exception de référence null peut se produire au moment de l'exécution lorsque le résultat est utilisé.

    Je ne comprends pas l'erreur et j'ai chercher sur MSDN en anglais mais je comprend toujours pas .

    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 616
    Points
    616
    Par défaut
    Juste une idée en passant ...
    C"est pas juste parce que tu instancies tes objets dans le try et que tu les utilises dans le finally ???
    Bonne chance
    Je pense volontiers à penser aux choses auxquelles je pense que les autres ne penseront pas

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    je ne pense pas car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Private Function ConvertLen(ByRef fileLen As Long) As String
            If fileLen < 1024 Then ConvertLen = fileLen & " octets"
            If fileLen > 1024 Then ConvertLen = Math.Round(fileLen / 1024) & " Ko"
            If fileLen > 1024000 Then ConvertLen = Math.Round(fileLen / (1024000), 2) & " Mo"
            If fileLen > 1024000000 Then ConvertLen = Math.Round(fileLen / (1024000000), 2) & " Go"
        End Function
    cette fonction aussi me donne la meme erreur et y'a pas de try !!

    HElp !! please
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    tu crées des fonctions mais elles ne retournent rien. Il faut mettre un return comme derniere instruction.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    biensur que si je retourne une valeur : "ConverLen" de toute maniere, meme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       Private Function ConvertLen(ByRef fileLen As Long) As String
            If fileLen < 1024 Then Return fileLen & " octets"
            If fileLen > 1024 Then Return Math.Round(fileLen / 1024) & " Ko"
            If fileLen > 1024000 Then Return Math.Round(fileLen / (1024000), 2) & " Mo"
            If fileLen > 1024000000 Then Return Math.Round(fileLen / (1024000000), 2) & " Go"
        End Function
    me crée la meme erreur !!

    Donc c'est pas une question de return
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Il suffit de bien lire le message, c'est clair pourtant !

    Si fileLen = 1024 que retourne ta fonction ?

    Ce genre de messages ne sont que des avertissements normalement, tu as une option pour éviter qu'elles génèrent une erreur de compilation.

  7. #7
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    bah nothing... lol et ca plante ^^ (heureusement que cela m'est jamais arrivé encore)

    Encore VS 2005 est relou, car il est pointilleux sur le code ^^ De plus, j'ai du désactiver les interceptions des controls appelés à partir d'un mauvais thread car sinon j'avais une erreur par procédure lol c'était ingérable...

    Merci bye
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #8
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    En fait, l'erreur ne vient pas réellement du fait que FileLen = 1024 n'est pas géré.
    En fait, pour ta méthode, le compilateur remarque que chaque Return est conditionné.
    Que tu gères ou pas "FileLen = 1024", il te générera un avertissement car pour le compilateur, le 4 conditions peuvent retourner Faux et dans cas, rien n'est retourné pour la fonction

    Pour bien faire, il faut procéder ainsi :

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Function ConvertLen(ByRef fileLen As Long) As String
            If fileLen < 1024 Then Return fileLen & " octets"
            ' Commence par le plus grand, car si tu commences par le test sur  
            ' 1024, les tests suivants ne seront jamais atteints...
            If fileLen > 1024000000 Then Return Math.Round(fileLen / (1024000000), 2) & " Go"
            If fileLen > 1024000 Then Return Math.Round(fileLen / (1024000), 2) & " Mo"
            If fileLen > 1024 Then Return Math.Round(fileLen / 1024) & " Ko"
     
            ' Par défaut retourne chaine vide
            Return ""
    End Function

  9. #9
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    merci pour l'explication bye
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. VB.NET 2005 Erreur incompréhensible avec le code
    Par Herlece dans le forum Windows Forms
    Réponses: 10
    Dernier message: 20/12/2007, 20h28
  2. [VB.NET 2005] Erreur de type (datarow / datacolumn)
    Par hubertfabien dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/04/2007, 14h12
  3. [VB.NET 2005] Parcourir les propriétes d'une Class
    Par ricil78 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2007, 21h47
  4. [VB.net 2005] Erreur de connexion à Access
    Par PoZZyX dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/09/2006, 12h01
  5. [VB.NET 2005] Erreur lors d'un envois de mail
    Par mimil77210 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2006, 14h00

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