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 :
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.
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; } }
Mon problème est ici :
Je n'arrive pas à ré-utiliser le DataAdapter stocké... Je reçois le message d'erreur suivant à la compilation :
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]); }
...pourtant Intellisense le voit bien.Un membre '_Dao._cDao.sTable.da' ne pouvant pas être appelé ne peut pas être utilisé comme une méthode.
Et si j'ajoute une méthode qui me renvoie le DataAdapter, j'ai le message :
J'ai également essayé de cloner les éléments mais en vain...da est un variable utilisé comme un méthode.
Merci de l'aide que vous pourrez m'apporter.
Partager