Bonjour,
Ci-dessous un bout de code qui permet d'écrire dans une base de données access.
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ConnectionAccess { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public DataSet dataSet; public OleDbDataAdapter adaptater; public static string maTable; public static string maBase; public static string connexion; public static string requete; public string Err; public string Rem; public void initBase() { maTable = "Table1"; maBase = "C:\\Users\\romain.duparc\\BDD.accdb"; connexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + maBase; requete = "SELECT Nom FROM " + maTable ; } public void Connexion() { OleDbConnection myConnection = new OleDbConnection(connexion); try { Err = ""; Rem = ""; myConnection.Open(); dataSet = new DataSet(); adaptater = new OleDbDataAdapter(requete, myConnection); OleDbCommandBuilder command = new OleDbCommandBuilder(adaptater); adaptater.Fill(dataSet, maTable); } catch { Err = "Erreur lecture base de donnée "; Rem = "Vérifiez les connexions réseau"; } finally { if (myConnection.State == ConnectionState.Open) { // myConnection.Close(); } } } public void Ajout() { DataRow nvxResu; nvxResu = dataSet.Tables[maTable].NewRow(); Err = ""; Rem = ""; dataSet.Tables[maTable].Rows.Add(nvxResu); } public void SauvegardeBase() { Err = ""; Rem = ""; try { adaptater.Update(dataSet.Tables[maTable]); } catch { Err = "La sauvegarde réseau à échouée, les données sont sauvegardées en mode local au format XML"; Rem = "Prévennir le département technique"; } } public void button1_Click(object sender, EventArgs e) { this.initBase(); this.Connexion(); this.Ajout(); this.SauvegardeBase(); if (Err == "") { } } } }
Ce code fonctionne a merveille avec des bases de données Access 2003 .mdb
mais il me fait une erreur de type avec des bases de données Access 2013 .accdb
et lorsque je change
DataRow nvxResu; en DataRow nvxResu = new DataRow(); dans la methode ajout j'obtiens l'erreur
Si l'un d'entre vous a une piste
il s'agit peu être d'un verrou sur les nouvelles versions d'access
:-(
Encore une demi journée de perdu ....
Partager