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 :

[VB2008 express] Access (pb de connexion a la base de donnée) [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut [VB2008 express] Access (pb de connexion a la base de donnée)
    Bonjour ,

    Je tente de me connecter à access, j'arrivais très bien en VB 6 (j'avais un exemple qui marchais très bien , mais là tous les exemples de connexion ne fonctionne pas . )

    J'ai toujours un message sympathique du type :

    Une exception de première chance de type 'System.InvalidOperationException' s'est produite dans System.Data.dll
    Les différents exemples qui ne fonctionne pas :

    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
    Imports System.Data.OleDb
     
    Module Module1
        Public cn As ADODB.Connection
        Public rs As ADODB.Recordset
        Public acsconn As New OleDbConnection
     
        Public acsdr As OleDbDataReader
     
        Public acsda As New OleDbDataAdapter
     
        Public strsql As String
        Sub connect(ByVal lien_bd As String)
     
            acsconn.ConnectionString = "Provider=microsoft.ace.oledb.12.0; data source=" + lien_bd + "; persist security info=false;"
            Debug.Print(acsconn.ConnectionString)
     
     
            acsconn.Open()'Erreur ici
            If acsconn.State = ConnectionState.Open Then
                MsgBox("Connected")
            End If
            If acsconn.State = ConnectionState.Closed Then
                'MsgBox("Cloed")
            End If
     
        End Sub
     
    End Module
    Un autre code que j'ai testé:

    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
    Imports System.Data.OleDb
    '////////////////////////MODULE FONCTION ACCESS////////////////
    Module bdaccess
        Dim MyConnection As New System.Data.OleDb.OleDbConnection()
        'procédure de connection a une bd access
        Public Sub DB_open(ByVal nombd As String)
            Try
                MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
                MyConnection.Open()'Message d'erreur ici 
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
        'deconenction de la base
        Public Sub deconnection()
            Try
                MyConnection.Close()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
        Public Function access(ByVal requetesql As String) As DataSet
            Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter()
            Dim MyDataSet As DataSet = New DataSet("MesDonnées")
            Dim StrConnect As String
            Dim MyCommand As OleDbCommand
            Dim requete As String
            Try
                MyCommand = New OleDbCommand(requetesql, MyConnection)
                MyAdapter.SelectCommand = MyCommand
                MyDataSet.Clear()
                MyAdapter.Fill(MyDataSet, "fichier")
                'A ce niveau les donnes résultantes de la requete
                'se trouvent dans => MyDataSet.Tables(0)
                Return MyDataSet
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Function
    End Module
    Le message d'erreur en plus est celui ci .
    Impossible d'établir la connection à la base.Le fournisseur 'Microsoft.Jet.OLEDB.4.0' n'est pas inscrit sur l'ordinateur local.

    J'ai lu sur certains forum qu'il faut passer en 32 bits car Microsoft.Jet.OLEDB.4.0 a été codé en 32 bits et n'est pas compatible en 64 , j'ai tenté ( je me suis peut être trompé dans les options ) mais ça plantais avant . ( j'utilise kernel32 pour utiliser les fichier.ini simplement ) [Mais bon je pense que ce n'est plus le cas , j'espère que windows a fait ce qu'il faut ... ]

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    il ne faut pas utiliser ADODB en .net (donc pas de recordset)
    il y a tout ce qu'il faut dans system.net.data.oledb (oledbdatareader est l'équivalent du recordset)

    sinon ton problème c'est que ton programme s'exécute en x64 et jet n'existe pas en x64
    il faut donc forcer la compilation en x86 ou passer par ace oledb (peut etre qu'il n'est pas présent par défaut dans windows comme l'est jet auquel cas l'installer)

  3. #3
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Merci , j'ai trouvé un des soucis , j'ai access en version 32 bits. Et windows n'as pas pensé a cette éventualité ( donc je pouvais tout faire )

    J'ai donc choisi de passer en 32 bits .La ça marche , j'ai passer pas mal d'heures pour une connerie si simple.

    Le code si ça peut aider quelqu'un.


    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
    'http://www.microsoft.com/fr-fr/download/details.aspx?id=13255 ( normalement pas besoin ) 
    '
    '    EXEMPLE ( ATTENTION NIV DEBUTANT ) 
    'DB_open(database_link)
    'Dim req As String
    'Dim row As OleDbDataReader
    'row = requette(req)
    'while row.next()   if(row.next() and row(0)>=0)then
    '   '
    '   '               end if
    '   row(0)
    'end while
    '
    'row.close()
    'DB_close()
    Imports System.Data
    Imports System.Data.OleDb
    '////////////////////////MODULE FONCTION ACCESS////////////////
    Module bdaccess
        Public MyConnection As New System.Data.OleDb.OleDbConnection()
        'procédure de connection a une bd access
        Public Sub DB_open(ByVal nombd As String)
            Try
                MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd & "; "
                MyConnection.Open()
            Catch ex As Exception
                Debug.Print("Impossible d'établir la connection à la base." & ex.Message)
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
        'deconenction de la base
        Public Sub DB_close()
            Try
                MyConnection.Close()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
     
        'Requette pensez a la fermer après consultation . 
        Public Function requette(ByVal sql As String) As OleDbDataReader
            Dim cmd As OleDbCommand
            cmd = New OleDbCommand(sql, MyConnection)
            Return cmd.ExecuteReader()
     
     
        End Function
     
     
     
    End Module

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    Citation Envoyé par paterson Voir le message
    j'ai passer pas mal d'heures pour une connerie si simple.
    si tu les as passé à chercher sur le net c'est étonnant, parce que ce forum et internet regorgent de centaines de milliers de messages et de sites expliquant ce problème ...

  5. #5
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Je sais , mais j'avais pas compris que le soucis était mon access.

    En fait il faut installer un petit logiciel http://www.microsoft.com/fr-fr/downl....aspx?id=13255

    Mais quand on a access 32 bits il faut le supprimer... ( donc j'ai fait comme beaucoup : 32 bits , dommage )

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/08/2008, 08h23
  2. Réponses: 28
    Dernier message: 27/04/2008, 17h05
  3. Connexion à une autre base de donnée Access
    Par Pitou5464 dans le forum Access
    Réponses: 4
    Dernier message: 12/09/2006, 12h25
  4. connexion a une base de donnée access
    Par yoyothebest dans le forum MFC
    Réponses: 2
    Dernier message: 12/04/2006, 09h29
  5. [JDBC] Connexion a une base de données Access
    Par sg-40 dans le forum JDBC
    Réponses: 4
    Dernier message: 05/11/2005, 15h25

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