Problème d'exécution d'une application

Signaler
Messages postés
45
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
28 mai 2012
-
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
-
Bonjour à tous
j'ai soucis lors de mon exécution de mon application
j'ai un message qui me dit :"Une exception de première chance de type 'System.Runtime.InteropServices.COMException' s'est produite dans bibliothèque.exe"
que dois je faire j'ai fait import System.Runtime.InteropServices.COMException mais sa sert à rien car j'ai pas la référence System.Runtime.InteropServices.COMException dans onglet COM n'est ce pas?
merci de votre aide
cordialement

6 réponses


Bonjour,

Une "COMexception" c'est une erreur liée à l'utilisation d'un composant COM. Il va falloir que tu montres ton code.
Messages postés
45
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
28 mai 2012

pourtant sa fonctionne sur mon pc de travail et pas de mon pc personnel????
voilà mon code:
Imports ADODB

Public Class Form1
    Dim cnx As ADODB.Connection = New ADODB.Connection
    Dim chainedeconnection As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\medas\Documents\Mangas.mdb"
    Dim sql As String
    Dim SqlChap As String
    Dim SqlTome As String
    Dim SqlTome1 As String
    Dim SqlAuteur As String
    Dim SqlAuteur1 As String
    Dim SqlChapTome As String
    Dim SqlChapTomeAut As String
    Dim SqlAutTome As String
    Dim SqlAutTome1 As String
    Dim SqlAutChap As String
    Dim SqlInsChap As String
    Dim SqlInsTome As String
    Dim SqlInsAut As String
    Dim rs As ADODB.Recordset = New ADODB.Recordset
    Dim RsChap As ADODB.Recordset = New ADODB.Recordset
    Dim RsTome As ADODB.Recordset = New ADODB.Recordset
    Dim RsTome1 As ADODB.Recordset = New ADODB.Recordset
    Dim RsAuteur As ADODB.Recordset = New ADODB.Recordset
    Dim RsAuteur1 As ADODB.Recordset = New ADODB.Recordset
    Dim RsChapTome As ADODB.Recordset = New ADODB.Recordset
    Dim RsChapTomeAut As ADODB.Recordset = New ADODB.Recordset
    Dim RsAutTome As ADODB.Recordset = New ADODB.Recordset
    Dim RsAutTome1 As ADODB.Recordset = New ADODB.Recordset
    Dim RsAutChap As ADODB.Recordset = New ADODB.Recordset

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        T_user.Visible = False
        L_identifiant.Visible = False
        B_ajouter.Visible = False
        B_Supprimer.Visible = False
        C_Auteur.Visible = False
        C_Chapitre.Visible = False
        C_Tome.Visible = False


        cnx.ConnectionString = chainedeconnection
        cnx.Open()
        sql = "select * from Chapitre"
        'rs.Open(sql, cnx, CursorTypeEnum.adOpenStatic)
        rs = cnx.Execute(sql)
        'lstchap.Items.Clear()

        'While Not RsChap.EOF
        '    lstchap.Items.Add(RsChap.Fields("NomChap").Value)
        '    RsChap.MoveNext()
        'End While
       

    End Sub

    Private Sub cmb_recherche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_recherche.Click
        Dim valeur As Integer

        lstchap.Items.Clear()
        lst_Tomes.Items.Clear()
        If Txt_Auteur.Text "" And Txt_Nomchap.Text "" And Txt_Tome.Text = "" Then
            MsgBox("veuillez saisir un des champs")
            valeur = 0
        End If
        If Txt_Nomchap.Text <> "" Then
            valeur = 1
        End If
        If Txt_Tome.Text <> "" Then
            valeur = 2
        End If
        If Txt_Auteur.Text <> "" Then
            valeur = 4
        End If
        If Txt_Nomchap.Text <> "" And Txt_Tome.Text <> "" Then
            valeur = 3
        End If
        If Txt_Auteur.Text <> "" And Txt_Tome.Text <> "" Then
            valeur = 6
        End If
        If Txt_Auteur.Text <> "" And Txt_Nomchap.Text <> "" Then
            valeur = 5
        End If
        If Txt_Auteur.Text <> "" And Txt_Nomchap.Text <> "" And Txt_Tome.Text <> "" Then
            valeur = 7
        End If

        Select Case valeur
            'recherche du chapitre dans la base de donnée et affiche le non du manga
            Case 1

                SqlChap = "SELECT Mangas.NomMangas, count(*)as nb FROM Mangas, Chapitre"
                SqlChap SqlChap & " WHERE Chapitre.CodeMangas Mangas.CodeMangas "
                SqlChap SqlChap & " AND NomChap'" & Txt_Nomchap.Text & "'"
                SqlChap = SqlChap & " GROUP BY Mangas.NomMangas "
                SqlChap = SqlChap & "having count (*) ;"
                'RsChap.Open(SqlChap, cnx, CursorTypeEnum.adOpenStatic, CursorTypeEnum.adOpenDynamic)
                RsChap = cnx.Execute(SqlChap)
                L_titreManga.Text = RsChap.Fields("NomMangas").Value
                If RsChap("nb").Value = 1 Then
                    affichagevb.Show()
                Else
                    MsgBox("vous avez mal saisi une donnée")
                End If
                'MsgBox(valeur)
                'recherche le nom du tome dans la base de donnée e affiche les chpitre en question
            Case 2

                SqlTome = " SELECT Mangas.NomMangas, Tome.NomTome, Chapitre.NomChap"
                SqlTome SqlTome & " FROM (Mangas INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas) "
                SqlTome SqlTome & " INNER JOIN Tome ON (Tome.CodeTome Chapitre.CodeTome) "
                SqlTome SqlTome & " AND (Mangas.CodeMangas Tome.CodeMangas)"
                SqlTome = SqlTome & " WHERE Tome.NomTome='" & Txt_Tome.Text & "'"
                SqlTome = SqlTome & " GROUP BY Mangas.NomMangas, Tome.NomTome, Chapitre.NomChap ;"

                ' requête pour connaître le nombre de chapitre

                SqlTome1 = " SELECT count(*)as nb"
                SqlTome1 SqlTome1 & " FROM (Mangas INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas) "
                SqlTome1 SqlTome1 & " INNER JOIN Tome ON (Tome.CodeTome Chapitre.CodeTome) "
                SqlTome1 SqlTome1 & " AND (Mangas.CodeMangas Tome.CodeMangas)"
                SqlTome1 = SqlTome1 & " WHERE Tome.NomTome='" & Txt_Tome.Text & "';"

                RsTome = cnx.Execute(SqlTome)
                RsTome1 = cnx.Execute(SqlTome1)

                'MsgBox(RsTome1.Fields("nb").Value)

                lstchap.Items.Clear()
                While Not RsTome.EOF
                    lstchap.Items.Add(RsTome.Fields("Nomchap").Value)
                    L_titreManga.Text = RsTome.Fields("NomMangas").Value
                    RsTome.MoveNext()
                End While

                txt_nbchap.Text = RsTome1.Fields("nb").Value

            Case 3
                'recherche le nom du chapitre et le tome et affiche les image en question et affiche le nom du manga
                SqlChapTome = " SELECT Mangas.NomMangas, count(*) as nb"
                SqlChapTome SqlChapTome & " FROM (Mangas INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas) INNER JOIN Tome ON (Tome.CodeTome = Chapitre.CodeTome) "
                SqlChapTome SqlChapTome & " AND (Mangas.CodeMangas Tome.CodeMangas)"
                SqlChapTome = SqlChapTome & " WHERE (((Chapitre.NomChap)='" & Txt_Nomchap.Text & "')"
                SqlChapTome = SqlChapTome & " AND ((Tome.NomTome)='" & Txt_Tome.Text & "'))"
                SqlChapTome = SqlChapTome & " group by Mangas.NomMangas;"
                'RsChapTome.Open(SqlChapTome, cnx, CursorTypeEnum.adOpenStatic)
                RsChapTome = cnx.Execute(SqlChapTome)
                L_titreManga.Text = RsChapTome.Fields("NomMangas").Value

                If RsChapTome("nb").Value = 1 Then
                    affichagevb.Show()
                Else
                    MsgBox("vous avez mal saisi une donnée")
                End If
                'MsgBox(valeur)
            Case 4
                'recherche le nom de l'auteur dans la basse de donné et affiche tous les mangas en question

                SqlAuteur = " SELECT Mangas.NomMangas, Tome.NomTome"
                SqlAuteur SqlAuteur & " FROM (Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlAuteur SqlAuteur & " INNER JOIN Tome ON Mangas.CodeMangas Tome.CodeMangas"
                SqlAuteur = SqlAuteur & " WHERE (((Auteur.NomAuteur)='" & Txt_Auteur.Text & "' ));"

                SqlAuteur1 = " SELECT count(*) as nbTome"
                SqlAuteur1 SqlAuteur1 & " FROM (Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlAuteur1 SqlAuteur1 & " INNER JOIN Tome ON Mangas.CodeMangas Tome.CodeMangas"
                SqlAuteur1 = SqlAuteur1 & " WHERE (((Auteur.NomAuteur)='" & Txt_Auteur.Text & "' ))"

                'RsAuteur.Open(SqlAuteur, cnx, CursorTypeEnum.adOpenStatic)
                RsAuteur = cnx.Execute(SqlAuteur)
                RsAuteur1 = cnx.Execute(SqlAuteur1)
                txt_nbtomes.Text = RsAuteur1.Fields("nbTome").Value

                If RsAuteur1.Fields("nbTome").Value > 1 Then
                    lst_Tomes.Items.Clear()
                    While Not RsAuteur.EOF
                        lst_Tomes.Items.Add(RsAuteur.Fields("nomTome").Value)
                        L_titreManga.Text = RsAuteur.Fields("NomMangas").Value
                        RsAuteur.MoveNext()
                    End While
                Else
                    MsgBox("vous avez mal saisi une donnée")
                End If
                'MsgBox(valeur)

            Case 5
                'recherche le chapitre et l'auteur dans la basse de donnée et affiche les images en question


                SqlAutChap = " SELECT Mangas.NomMangas, count(*)as nb"
                SqlAutChap SqlAutChap & " FROM (Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlAutChap SqlAutChap & " INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas"
                SqlAutChap = SqlAutChap & " WHERE (((Auteur.NomAuteur)='" & Txt_Auteur.Text & " ')"
                SqlAutChap = SqlAutChap & " AND ((Chapitre.NomChap)='" & Txt_Nomchap.Text & "'))"
                SqlAutChap = SqlAutChap & " GROUP BY Mangas.NomMangas ;"
                'RsAutChap.Open(SqlAutChap, cnx, CursorTypeEnum.adOpenStatic)
                RsAutChap = cnx.Execute(SqlAutChap)
                L_titreManga.Text = RsAutChap.Fields("NomMangas").Value
                If RsAutChap("nb").Value = 1 Then
                    affichagevb.Show()
                Else
                    MsgBox("vous avez mal saisi une donnée")
                End If
                'MsgBox(valeur)

            Case 6
                'recherche l'auteur et le tome en question affiche dans la liste tous les chapitres en question
                SqlAutTome = " SELECT Chapitre.NomChap, Mangas.NomMangas"
                SqlAutTome SqlAutTome & " FROM ((Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlAutTome SqlAutTome & " INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas) "
                SqlAutTome SqlAutTome & " INNER JOIN Tome ON (Tome.CodeTome Chapitre.CodeTome) "
                SqlAutTome SqlAutTome & " AND (Mangas.CodeMangas Tome.CodeMangas)"
                SqlAutTome = SqlAutTome & " WHERE (((Auteur.NomAuteur)='" & Txt_Auteur.Text & "')"
                SqlAutTome = SqlAutTome & " AND ((Tome.NomTome)='" & Txt_Tome.Text & "'));"
                'Nombre de chapitre
                SqlAutTome1 = " SELECT count(*) as nbchapitre"
                SqlAutTome1 SqlAutTome1 & " FROM ((Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlAutTome1 SqlAutTome1 & " INNER JOIN Chapitre ON Mangas.CodeMangas Chapitre.CodeMangas) "
                SqlAutTome1 SqlAutTome1 & " INNER JOIN Tome ON (Tome.CodeTome Chapitre.CodeTome) AND (Mangas.CodeMangas = Tome.CodeMangas)"
                SqlAutTome1 SqlAutTome1 & " WHERE(((Tome.NomTome) '" & Txt_Tome.Text & "')"
                SqlAutTome1 SqlAutTome1 & " And ((Auteur.NomAuteur) '" & Txt_Auteur.Text & "'));"



                'RsAutTome.Open(SqlAutTome, cnx, CursorTypeEnum.adOpenStatic)
                RsAutTome = cnx.Execute(SqlAutTome)
                RsAutTome1 = cnx.Execute(SqlAutTome1)
                txt_nbchap.Text = RsAutTome1.Fields("nbchapitre").Value
                lstchap.Items.Clear()

                While Not RsAutTome.EOF
                    lstchap.Items.Add(RsAutTome.Fields("Nomchap").Value)
                    L_titreManga.Text = RsAutTome.Fields("NomMangas").Value
                    RsAutTome.MoveNext()
                End While
                'MsgBox(valeur)


            Case 7
                'recherche le chapitree le tome et l'auteur dans la base de donnée et affiche les images en question
                SqlChapTomeAut = " SELECT count(Chapitre.NomChap) as nb"
                SqlChapTomeAut SqlChapTomeAut & " FROM ((Auteur INNER JOIN Mangas ON Auteur.CodeAuteur Mangas.CodeAuteur) "
                SqlChapTomeAut SqlChapTomeAut & " INNER JOIN Tome ON Mangas.CodeMangas Tome.CodeMangas) "
                SqlChapTomeAut SqlChapTomeAut & " INNER JOIN Chapitre ON (Tome.CodeTome Chapitre.CodeTome) "
                SqlChapTomeAut SqlChapTomeAut & " AND (Mangas.CodeMangas Chapitre.CodeMangas)"
                SqlChapTomeAut = SqlChapTomeAut & " WHERE (((Auteur.NomAuteur)='" & Txt_Auteur.Text & "')"
                SqlChapTomeAut = SqlChapTomeAut & " AND ((Tome.NomTome)='" & Txt_Tome.Text & "')"
                SqlChapTomeAut = SqlChapTomeAut & " AND ((Chapitre.NomChap)='" & Txt_Nomchap.Text & "'));"
                'RsChapTomeAut.Open(SqlChapTomeAut, cnx, CursorTypeEnum.adOpenStatic)
                RsChapTomeAut = cnx.Execute(SqlChapTomeAut)
                L_titreManga.Text = RsChapTomeAut.Fields("NomMangas").Value
                If RsChapTomeAut("nb").Value = 1 Then
                    affichagevb.Show()
                    L_titreManga.Text = RsAuteur.Fields("NomMangas").Value
                Else
                    MsgBox("vous avez mal saisi une donnée")
                End If
                'MsgBox(valeur)

        End Select
        'MsgBox(valeur)
    End Sub

    Private Sub cmd_Fermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Fermer.Click
        Me.Close()
        'Me.Hide()
        'affichagevb.Show()
    End Sub

    Private Sub cmb_effacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_effacer.Click
        T_user.Text = ""
        Txt_Auteur.Text = ""
        Txt_Tome.Text = ""
        Txt_Nomchap.Text = ""
        lst_Tomes.Items.Clear()
        lstchap.Items.Clear()
        txt_nbtomes.Text = ""
        txt_nbchap.Text = ""
        L_titreManga.Text = "Bibliothèque"
    End Sub

    Private Sub T_user_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles T_user.TextChanged
        T_user.UseSystemPasswordChar = True

        If T_user.Text = "med@s918" Then
            B_ajouter.Visible = True
            B_Supprimer.Visible = True
            C_Auteur.Visible = True
            C_Chapitre.Visible = True
            C_Tome.Visible = True
            cmb_recherche.Visible = False
        End If
    End Sub

    Private Sub Txt_Nomchap_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_Nomchap.TextChanged
        If Txt_Nomchap.Text = "ajouter" Then
            T_user.Visible = True
            L_identifiant.Visible = True
        End If
    End Sub

    Private Sub B_ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_ajouter.Click
        SqlInsChap = " INSERT INTO Chapitre (CodeChap, NomChap, CodeMangas, CodeTome)"
        'SqlInsChap=SqlInsChap & " VALUES ('" & Txt_Nomchap.Text & "','" & & "','" & & "','" & & "');"

    End Sub

    Private Sub B_Supprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Supprimer.Click

    End Sub

    Private Sub C_Chapitre_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C_Chapitre.CheckedChanged
        If C_Chapitre.Checked = True Then
            C_Tome.Checked = False
            C_Auteur.Visible = True
            C_Chapitre.Visible = True
            C_Tome.Visible = True
            lbl_Auteur.Visible = True
            Txt_Auteur.Visible = True
            L_identifiant.Text = "CodeChapitre"
            lbl_chap.Text = "NomChapitre"
            lbl_Tome.Text = "CodeTome"
            lbl_Auteur.Text = "CodeMangas"

        End If
    End Sub

    Private Sub C_Tome_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C_Tome.CheckedChanged
        If C_Tome.Checked = True Then
            C_Chapitre.Checked = False
            C_Auteur.Checked = False
            C_Auteur.Visible = True
            C_Chapitre.Visible = True
            C_Tome.Visible = True
            lbl_Auteur.Visible = True
            Txt_Auteur.Visible = True
            L_identifiant.Text = "CodeTome"
            lbl_chap.Text = "NomTome"
            lbl_Tome.Text = "NbChap"
            lbl_Auteur.Text = "CodeMangas"
            
        End If
    End Sub

    Private Sub C_Auteur_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C_Auteur.CheckedChanged
        If C_Auteur.Checked = True Then
            C_Tome.Checked = False
            C_Chapitre.Checked = False
            C_Auteur.Visible = True
            C_Chapitre.Visible = True
            C_Tome.Visible = True
            L_identifiant.Text = "CodeAuteur"
            lbl_chap.Text = "NomAuteur"
            lbl_Tome.Text = "PrénomAuteur"
            lbl_Auteur.Visible = False
            Txt_Auteur.Visible = False

        End If
    End Sub
End Class

Bonjour,

Apparamment, le seul composant COM que tu utilises est ADO; que tu pourrais avantageusement remplacer par Ado.net avec Un recordset et des datatable en mémoire vive.

Ceci dit, si tu veux continuer avec ADO, quelques questions.

Ton problème survient-il avec la source dans VB, ou dans ton exécutable ?

As-tu la même version d'Access chez-vous et au travail ?
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

Sur quelle ligne, ça génère l'erreur ?
As-tu regardé le contenu de l'erreur ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
45
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
28 mai 2012

bonsoir
alors pour répondre à vos question
non, on a pas la même version d'access mais c'est en en extension mdb, l'erreur viens juste :
cnx.ConnectionString = chainedeconnection
        cnx.Open()

je préfère rester en ado car si je met en ado.net je devrais tous modeler le code. (pas le temps)
cordialement
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

Il doit y avoir une erreur dans ta chaine de connexion, regardes :
http://www.connectionstrings.com/

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site