Salut !

Hier je me suis pris un peu la tête sur un problème de typage de colonne dans les DataSet. J'ai trouvé une solution à mon problème MAIS je trouve ça assez crade niveau code et pas du tout dynamique. J'aimerai bien savoir s'il y a une autre solution à ce problème.. Le voici :

Au départ je structurais mon DataSet avec la méthode FillSchema.
Le FillSchema ne récupère pas du tout les types des colonnes de ma table.
Je me retrouve alors avec des colonnes de type System.String.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
myDataAdapter.FillSchema(ds, SchemaType.Mapped, tableName); //je fill avec un SELECT * FROM tablename;
....
//Ajout d'une nouvelle row dans mon DataSet
DataRow dr= MyDS.Tables["tablename"].NewRow();
     dr["Description"] = myInterv.Description;
     ....
     dr["Date_début"] = myInterv.DateDebut; // myInterv.DateDebut est de type DateTime
MyDS.Tables["tablename"].Rows.Add(dr); <<< Impossible de définir la colonne 'Date_début'. La valeur dépasse la limite MaxLength de cette colonne.
Je me suis dit que c'était à cause du type String de la colonne du DataSet qui n'aimait pas qu'on lui passe un DateTime...


Je rajoute alors dans mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
MyDS.FillSchema(ds, SchemaType.Mapped, tableName);
MyDS.Tables["tablename"].Columns["Date_début"].DataType = System.Type.GetType("System.DataTime");
 
....
Toujours même erreur au niveau de l'ajout de la row dans le dataset !
Je change alors la taille du maxlength avec plusieurs valeurs différentes... toujours même message d'erreur.

Finalement je remplis mon dataset a la main.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
MyDS.Tables.Add("tablename");
     MyDS.Tables["tablename"].Columns.Add("Description", System.Type.GetType("System.String"));
     ....
     MyDS.Tables["tablename"].Columns.Add("Date_début", System.Type.GetType("System.DateTime"));
Et bien entendu quand j'ajoute ma row... ça passe très bien, aucune erreur.

C'est cool que ça fonctionne mais j'ai 2 tables à remplir et une 20aine de champs par table. Ajouter à la main c'est très lourd (niveau code) !!
Si quelqu'un a une solution... je prends avec plaisir !

Merci d'avance