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 :

Erreur bizarre MySQL


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut Erreur bizarre MySQL
    Bonjour à tous.

    J'ai eu pour la première fois une erreur qui est apparu lors de l'utilisation d'une base de donnée.

    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
    conna.Provider = "Microsoft.Jet.OLEDB.4.0"
    conna.ConnectionString = lien_BDD
    conna.Open()
     
    For i = 0 To Nb_item - 1
                'recup le gain en classement carrière
                pos_car = Liste_export_WRC.List_export_pilote_wrc_rallye.Items(i).SubItems(11).Text
                sqla1.ActiveConnection = conna
                sqla1.CommandText = "SELECT * FROM Dotation_Pilote_Carierre WHERE Position=" & pos_car & ""
                orsa1.Open(sqla1)
     
                If IsDBNull(orsa1("Valeur").Value) Then
                    gain_car = "0"
                Else
                    gain_car = orsa1("Valeur").Value
                End If
    ...
    ...
    ...
    ...
    J'ai une erreur sur la ligne

    <== Erreur non spécifiée (Exception de HRESULT : 0x80004005 (E_FAIL))

    Quelqu'un à-t-il déjà eu ce problème ????

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    il faudrait qu'on ait les déclarations de tes objets pour savoir à quoi ils correspondent.
    Sinon tu as l'erreur pour d'autres requêtes ?
    L'erreur intervient de suite sur la première itération de celle-ci (cf. ta boucle for) ?
    C'est voulu l'utilisation d'OleDB plutôt que le connecteur MySQL ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    Dans le logiciel que je programme, je fais énormément de requêtes sur 3 bases de données différentes, et aucun problème.
    Pourquoi d'OleDB plutôt que le connecteur MySQL j'apprends tous seul la prog... Alors on fait avec ce que l'on sait

    sinon voici le code entier de la procédure.

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Dim conna As New ADODB.Connection
            Dim sqla1 As New ADODB.Command
            Dim orsa1 As New ADODB.Recordset
            Dim sqla2 As New ADODB.Command
            Dim orsa2 As New ADODB.Recordset
     
            Dim Nb_item                             'nombre d'item dans le listview
            Dim pos_car As Integer                  'Position Classement carrière
            Dim pos_pro As Integer                  'Position au classement pro
            Dim gain_car As Integer                 'Gain au classement carrière
            Dim gain_pro As Integer                 'Gain au classement pro
     
            lien_BDD = GetSetting("Gestion Team 2016", "Dossier", "Lien Dossier", "0")
            lien_BDD = lien_BDD & "\Donnees\Donnees_WRC.mdb"
     
     
            'Modifie ligne par ligne le listview
     
            'Try
            ' OUVERTURE DE LA BDD DE L'EPREUVE
            conna.Provider = "Microsoft.Jet.OLEDB.4.0"
            conna.ConnectionString = lien_BDD
            conna.Open()
     
            Nb_item = Liste_export_WRC.List_export_pilote_wrc_rallye.Items.Count
     
            If Nb_item = "0" Then
                'Pas de classement sur le listview
                Exit Sub
            End If
     
            For i = 0 To Nb_item - 1
                'recup le gain en classement carrière
                pos_car = Liste_export_WRC.List_export_pilote_wrc_rallye.Items(i).SubItems(11).Text
     
                sqla1.ActiveConnection = conna
                sqla1.CommandText = "SELECT * FROM Dotation_Pilote_Carierre WHERE Position=" & pos_car
                orsa1.Open(sqla1)
     
                If IsDBNull(orsa1("Valeur").Value) Then
                    gain_car = "0"
                Else
                    gain_car = orsa1("Valeur").Value
                End If
     
                Liste_export_WRC.List_export_pilote_wrc_rallye.Items(i).SubItems(12).Text = gain_car
                orsa1.Close()
     
                MsgBox(i)
     
                '----------------------------------------------------------------------------------------------------
                '----------------------------------------------------------------------------------------------------
                '----------------------------------------------------------------------------------------------------
                'recup le gain en classement pro
                pos_pro = Liste_export_WRC.List_export_pilote_wrc_rallye.Items(i).SubItems(13).Text
                sqla2.ActiveConnection = conna
                sqla2.CommandText = "SELECT * FROM Dotation_Pilote_Pro WHERE Position=" & pos_pro
                orsa2.Open(sqla2)
     
                If IsDBNull(orsa2("Valeur").Value) Then
                    gain_pro = "0"
                Else
                    gain_pro = orsa2("Valeur").Value
                End If
     
                Liste_export_WRC.List_export_pilote_wrc_rallye.Items(i).SubItems(14).Text = gain_pro
                orsa2.Close()
     
     
            Next i
            orsa1 = Nothing
            sqla1 = Nothing
     
            orsa2 = Nothing
            sqla2 = Nothing
     
            'fermer la BDD
            conna.Close()
            conna = Nothing
     
            'Catch ex As Exception
            '    MsgBox(ex.Message, MsgBoxStyle.Information, "Erreur Lecture table dotation Pilote Carrière et Pro WRC")
            'End Try

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    J'ai fait une modification de la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqla1.CommandText = "SELECT * FROM Dotation_Pilote_Carierre WHERE Position=" & pos_car
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqla1.CommandText = "SELECT * FROM Dotation_Pilote_Carierre
    Et la il n'y a plus d'érreur sa marche.... Sauf que bon, je cherche une valeur précise

  5. #5
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut
    Salut,
    Je pense que tu devrais utiliser une requête paramétrée : http://webman.developpez.com/article...eter/vbnet/#L3
    Merci de ainsi que d'utiliser les boutons et

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    En l’occurrence, avec mysql (et d'autres), il faut échapper les paramètre de type texte.
    Sinon, une fois la requête construite, comment ferait il la différence entre un paramètre et la suite de la requête ?

    Le teste bête à faire, c'est : Construire la requête, la copier et la tester dans un Query Browser, voir pourquoi la requête ne passe pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Dotation_Pilote_Carierre WHERE Position=position 32 OR Position = position 33
    Est très différent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Dotation_Pilote_Carierre WHERE Position='position 32' OR Position = 'Position 33'

    Et forcement je plussois r.morel, qui comme il le dit, avec des requêtes paramétrées tu n'as plus ce problème là
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Et au passage, utiliser ADODB.Connection et consors, ca relève de la préhistoire ! C'était ce qu'il fallait utiliser avec VBA/VB6, mais avec VB.NET il faut basculer sur ADO.NET et les objets type OleDbConnection, etc.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Par défaut
    Est ce que utiliser le connecteur MySQL ne serait pas mieux que de passer par une connexion Ole ? Comme indiqué par jopopmk.
    Voir ce tutoriel : http://morpheus.developpez.com/mysqldotnet/
    Pour télécharger le connecteur : https://dev.mysql.com/downloads/connector/net/
    Merci de ainsi que d'utiliser les boutons et

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par r.morel Voir le message
    Est ce que utiliser le connecteur MySQL ne serait pas mieux que de passer par une connexion Ole ? Comme indiqué par jopopmk.
    Oui tout à fait, il est plus qu'évident qu'un provider taillé sur mesure sera bien plus adapté, mais comme l'OP indiquait être en phase d'apprentissage et vouloir faire avec les moyens du bord, je n'ai pas jugé utile de le proposer
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    Bonjour.

    J'ai bien pris note de vos réponse. J'ai une solution qui est moche mais qui marche.
    Malheureusement la deadline pour le logiciel est tellement proche que je ne peux me permettre de faire autrement.

    En revanche, vos liens et explication m'ont été utile et je les gardent sous le coude afin de faire évoluer ma façon de programmer. Si ma méthode est trop anciènne, il est normal d'évoluer. Et une fois le logiciel terminé, j'aurais plus de temps pour faire des modification.

    Merci.

Discussions similaires

  1. [MySql] Alteration erreur bizarre
    Par NeoKript dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/01/2010, 15h22
  2. [QReport] Erreur bizarre
    Par vali dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/03/2009, 01h25
  3. Le kernel erreur bizarre au chargement d'ext3
    Par Invité dans le forum Administration système
    Réponses: 6
    Dernier message: 01/09/2004, 16h54
  4. [appel de fonction]Erreur bizarre
    Par DEC dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2004, 17h08
  5. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28

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