Bonjour,
Voilà mon problème:
Je développe une application Windows forme. Cette appli ce connecte à une BDD .accdb, et cela fonctionne bien. Cependant, cela ne fonctionne pas sur toutes les configuration.
Voici un extrait de mon code de connexion et de lecture: (ce que j'apprécie avec cette méthode, est que je travail avec une chaine SQL pour toute mes opération)
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
 
Friend ContenuColonne() As String
Public CheminAplication As String = Application.StartupPath 
'Déclaration de la variable pour la connection      
Public cnx As New OleDbConnection
'Déclaration de la variable pour la connectionstring      
Private cnxstr As String
'Déclaration de la variable pour la commande       
Private cmd As OleDbCommand
 
Public Sub OpenConnexionBdd()
	'ouverture de la connexion
        cnxstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CheminAplication & "\BDD.accdb";"
        cnx.ConnectionString = cnxstr
        Try
            cnx.Open()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub
 
Public Sub CloseConnexionBdd()
	'fermeture de la connexion
        Try
            cnx.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub
 
Public Sub ReadBdd(ByVal LeChamp As String, ByVal LaTable As String)
        Try
            'Création de la requête sql   
            Dim SQL As String = "SELECT " & LeChamp & " FROM " & LaTable & ";"
            Dim i As Long
            'Création de la commande et on l'instancie (sql)       
            cmd = New OleDbCommand(SQL)
            'On instancie la commande (cmd) à la connection (cnx)       
            cmd.Connection() = cnx
	    'récupère le contenu de la colonne
            Dim dre As OleDbDataReader = cmd.ExecuteReader()
            i = 0
            ReDim ContenuColonne(i)
            While dre.Read()
                ReDim Preserve ContenuColonne(i)
                ContenuColonne(i) = dre(0).ToString()
                i = i + 1
            End While
            dre.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub
 
'lorsque l'on active un radio bouton, la listbox1 est rempli avec ces donnée
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
        If RadioButton1.Checked = True Then
            Call OpenConnexionBdd()
            Call ReadBdd("Champ2", "Table1")
            Call CloseConnexionBdd()
            ListBox1.DataSource = ContenuColonne
            Label.Text = "Résultats: " & ContenuColonne.Count
         End If
End Sub
'Pour exemple, permet de modifier une valeur de la ligne, à vous de modifier selon vos besoins
Public Sub ModifieValeurBddTable(ByVal valCle As String, ByVal val1 As String, ByVal champ1 As String)
        'création de la SQL
        Dim LesModifs As String = ""
	'si plusieur valeur à changer, ajoutez des teste en fonction de ce que l'on veux et des paramètre dans la procedure, ou imaginer quelque chose avec un tableau
        If valModele & "" <> "" Then
            LesModifs = LesModifs & champ1 & " = '" & val1 & "', "
        End If
        'suppression de la virgule des de l'espace
        LesModifs = LesModifs.Substring(0, LesModifs.Length - 2)
        Dim SQL As String = "UPDATE Table1 SET " & LesModifs & " WHERE ChampCle = " & valCle & ";"
        'Création de la commande et on l'instancie (sql)       
        cmd = New OleDbCommand(SQL)
        'On instancie la commande (cmd) à la connection (cnx)       
        cmd.Connection() = cnx
        cmd.ExecuteNonQuery()
 End Sub
 'et pour la suppression ou l'insertion, il suffit de mettre la bonne chaine SQL
Comme je le disais, cela fonctionne bien avec ma configuration (Windows10 64bit, office 32bit, et access database engine 2010 64 bit installé)
Cependant, cette application devra finir par être exécuté sur des poste qui n'ont pas access database engine d'installer, sans aucun moyen de l'installer.
Les poste qui devrons l’exécuter sont des poste avec windows10 64bit, et office 32bit ou 64bit standard (sans access), et pas de possibilité de changer les configurations.
d’où ma question, avez vous une idée de comment le faire?
Existe-t-il un moyen de mettre des bibliothèque à coté du programme et qu'il utilise la bonne en fonction de la configuration reconnu?
Ou dois-je seulement changer de chaine de connexion en fonction des configurations rencontré?
Peut-être que je dois carrément changer de base de donnée, et si c'est le cas, par quoi? et comment le faire?
Ou avez-vous une autre suggestion?

Merci d'avance à toute les personnes qui prendrais le temps et la peine de m'expliquer leur idées (sans forcement commenter mon code qui n'est là que pour aider d'autre personne qui chercherais un exemple pour faire une connexion à une base de donnée et cela de la façon la plus simple possible. Sans builder et autre dataset...).