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.