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

Nom : erreur1.jpg
Affichages : 362
Taille : 149,1 Ko

et lorsque je change
DataRow nvxResu; en DataRow nvxResu = new DataRow(); dans la methode ajout j'obtiens l'erreur

Nom : erreur2.jpg
Affichages : 437
Taille : 91,5 Ko


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 ....