Bonjour,

Je suis nouveau sur ce forum et voici mon problème :

Je développe actuellement une apllication de base de données en C#. Pour le moment j'utilise une base Access mais prochainement elle evoluera vers PostgreSQL.
C'est mon premier gros projet et j'ai tenu à programmer plus "propre", plus POO et en 3 couches (Données, Métier, Interface) mais je pense que je me suis pris un peu trop au jeu....
Je souhaitais avoir une structure (ou une classe) pour y stocker mes différents objets se réferrant à une table donnée, puis une collection de ces éléments dans une liste.

Voici mon code :

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
 
class _cDao
    {
        private DataSet ds;
 
        private string[] NomTables = {"Categorie", "Fabricant", "Fournisseur", "RefFournisseur", "Stock" };
 
        private struct sTable
        {
            public string sNomTable;
            public OleDbDataAdapter da;
            public OleDbCommandBuilder cb;
        }
 
        private List<sTable> ListeTables;
 
        public _cDao()
        {
 
            this.ds = new DataSet();
            this.ListeTables = new List<sTable>();
 
            Connexion cnx = new Connexion();
 
            cnx.Open();
 
            foreach (string _itable in NomTables)
            {
                sTable table = new sTable();
 
                string requete = "SELECT * FROM " + _itable;
 
                table.sNomTable = _itable;
 
                table.da = new OleDbDataAdapter(requete, cnx.GetConnexion());
 
                table.cb = new OleDbCommandBuilder(table.da);
 
                table.da.FillSchema(ds, SchemaType.Mapped, _itable);
                table.da.Fill(ds, _itable);
 
                ListeTables.Add(table);
            }
 
            cnx.Close();
        }
 
        public DataSet GetDataSet()
        {
            return ds;
        }
 
   }
Cette partie de code fonctionne bien, je récupére bien mon DataSet chargé correctement. Dans une prochaine version c'est la couche métier qui transmettra les noms de table à récupérer.

Mon problème est ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
 public void TableUpdate(int _itable)
        {
            sTable table = new sTable();
 
            table = ListeTables[_itable];
 
            table.da(ds.Tables[table.sNomTable]);
        }
Je n'arrive pas à ré-utiliser le DataAdapter stocké... Je reçois le message d'erreur suivant à la compilation :

Un membre '_Dao._cDao.sTable.da' ne pouvant pas être appelé ne peut pas être utilisé comme une méthode.
...pourtant Intellisense le voit bien.

Et si j'ajoute une méthode qui me renvoie le DataAdapter, j'ai le message :
da est un variable utilisé comme un méthode.
J'ai également essayé de cloner les éléments mais en vain...

Merci de l'aide que vous pourrez m'apporter.