Question sur le traitement d'une base de données dont les colonnes sont inconnue

Résolu
cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009 - 23 déc. 2008 à 18:49
cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009 - 24 déc. 2008 à 13:23
Bonjour (ou bonsoir) tout le monde,

Alors voilà, je développe une application et je butte sur un certain point.  Mon application (client / serveur) est basée sur une base Access.

Au moment de l'installation l'application, je donne la possibilité à l'utilisateur de personnaliser la table Employe (qui sert a stocker toutes les informations sur les employés de l'entreprise). Néanmoins, j'impose l'existence de trois champs : Num (qui est un numéro automatique), Nom (le nom de l'amployé) et Prenom. Ces 3 champs sont imposés pour le fonctionnement de l'application. La personolisation consiste donc en l'ajout de champs supplémentaires à ces 3 là.

Au sein même de mon application j'ai une classe Employe. Voilà le code de la classe :
<hr size="2" width="100%" />
public class Employe
{

   private int i_Numero;
   private string s_Nom;
   private string s_Prenom

   public Employe(int TheNumero, string TheNom, string ThePrenom)
   {
      i_Numero = TheNumero;
      s_Nom = TheNom;
      s_Prenom = ThePrenom;
    }

   public int Numero
   {
      get { return i_Numero;}
      set { i_Numero = value;}
   }

   public string Nom
   {
      get { return s_Nom; }
      set { s_Nom = value; }
   }

   public string Prenom
   {
      get {return s_Prenom;}
      set {s_Prenom = value;}
   }

}
<hr size="2" width="100%" />
Comme vous le voyez, je ne gère pas les champs ajoutés par l'utilisateur. Et c'est pour cela que je viens vous voir : comment gérer ces champs, dont l'application ne connait pas l'existence ?

Je me suis penché sur le problème et j'ai retenu une solution :

Au sein de ma classe Employe je rajouter deux variables :
1) une variable contenant le nom de tous les champs rajoutés (séparés par un délimiteur)
2) une variable contenant la valeur de ces champs pour l'employe

Ainsi en découleraient 2 propriétés :
1) une static me permettant de récupérer les titres des champs
2) et une autre permettant de récupérer les valeurs pour l'employé en traitement

PS : J'ai besoin de connaitre ces valeurs pour remplir un ListView

J'aimerai donc avoir des avis sur ma solution (est-elle bonne, valable, à oublier ? ) et savoir vos idées pour résoudre ce problème.

Je vous remercie cordialement
Finality

4 réponses

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
24 déc. 2008 à 12:28
Bonjour,

Personnellement, j'utiliserai une collection de type clé valeur pour stocker les nouvelles valeurs ajoutées.

La clef serait le nom de la colonne et la valeur ... ben la valeur :)

Ensuite, tu binde tes listes en parcourant la collection de clefs.

tu peux utiliser une collection de type Dictionnary<String,String> par exemple.

Bon courage
3
cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009
24 déc. 2008 à 13:00
Salut titeoe,

tout d'abord, merci pour ton aide . Je ne connaissais pas ce type de collections, je vais donc m'y pencher de plus prêt. Néanmoins,cela risque de prendre un peu de temps du fait que je dois aussi développer d'autres points de mon application. D'ailleurs, une foi finie, je la posterai sur CodesSources, ça donnera un bon exemple pour des applications en WCF (attention elle est pas petite ).

Je te souhaites donc un très bon noël, et je reviens donner des nouvelles dès que j'aurais exploré ce type de collection.

Une fois encore merci,
Finality
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
24 déc. 2008 à 13:22
merci , bon courage a toi.

> pensez "réponse acceptée"
0
cs_Finality Messages postés 76 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 22 janvier 2009
24 déc. 2008 à 13:23
si je n'ai pas mis "Réponse acceptée" c'est car je ne l'ai pas encore testés .

Finality
0
Rejoignez-nous