begin process at 2012 02 10 06:55:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

ADO.NET

 > 

remplir un dataset avec une valeur null


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

remplir un dataset avec une valeur null

lundi 20 octobre 2008 à 14:30:01 | remplir un dataset avec une valeur null

bellak

Salut tout le monde ,
j'ai un petit soucis avec le remplissage d'un dateset ,
donc j'ai deux dataset (DTSetAux,DtsetDevis) qui contiennent plusieurs et les memes tables (Dev...) , je veux remplir ma table "Dev" du "DtsetDevis" a partir de la table "Dev" du "DTSetAux" qu'elle peut contenir des champs null , pour le moment j'utilise le code :
for(int k = 0; k < DTSetAux.Tables["DevisAux"].Rows.Count; k++)
{
dtSet.AuxDetail.AddAuxDetailRow(DTSetAux.Tables["DevisAux"].Rows[k][1].ToString(),
DTSetAux.Tables["DevisAux"].Rows[k][2].ToString(), DTSetAux.Tables["DevisAux"].Rows[k][3].ToString(),
Convert.ToInt32(DTSetAux.Tables["DevisAux"].Rows[k][4].ToString()),
Convert.ToSingle(DTSetAux.Tables["DevisAux"].Rows[k][5].ToString());
}
le probleme est sur les valeurs null , est-ce je suis obligé d'utiliser les if..else.. pour chaque champ pour verifier si c'est null ou non ?? ou bien il y a une propriete pour regler ce genre de probleme .
merci d'avance .
lundi 20 octobre 2008 à 17:29:49 | Re : remplir un dataset avec une valeur null

danious


Bonjour,

On dirait que tu utilises des dataset types. Si c'est le cas, utiliseDTSetAux.DevisAux[k] pour accéder à la k-ème ligne. Cette ligne ne sera plus de type DataRow "générique" mais de ton type particulier (DevisAuxRow normalement). Après, il suffit d'accéder aux champs en utilisant le "." comme pour n'importe quel champ d'une classe. En faisant comme ça, tes 3 premiers paramètres de type string ne poseront plus de problème. Pour les 2 derniers, si ta méthode demande des types non nullables et que tu récupères des types nullables depuis la table "DevisAux", pense à utiliser GetValueOrDefault sur ton type nullable.

Si tu n'utilises pas les DataSet typés, tu es obligé de tester si les champs sont null (en utilisant DBNull.Value), au mieux en utilisant la construction "<condition>?<si vrai>:<si faux>;"
lundi 20 octobre 2008 à 17:44:22 | Re : remplir un dataset avec une valeur null

bellak

bonjour "danious" ,
merci pour la reponse , mon premier DataSet (DTSetAux) n'est pas un dataset typé par contre le deuxieme est typé donc si j'ai bien compris je dois passer par un dataset typé , si c'est le cas que dois-je faire apres exactement ??
merci .
mardi 21 octobre 2008 à 03:18:42 | Re : remplir un dataset avec une valeur null

bellak

pour la deuxieme solution , le probleme c'est que je dois tester ,si je me trompe pas, "2"puissance"nbreColonne" fois si la valeur est null pour resoudre mon probleme . donc je dois utiliser la premiere solution .
encore merci , le probleme reste ouvert et si quelqu'un a une autre solution je suis preneur .
mardi 21 octobre 2008 à 09:10:27 | Re : remplir un dataset avec une valeur null

danious


En fait tu testerais autant de fois qu'il y a de valeurs qui peuvent être nulles, et à mon avis le temps d'exécution des tests sera très faible comparé aux temps des méthodes Convert.XXX. De toute façon, dans ton premier dataset, tu peux avoir des valeurs nulles, mais ta méthode AddAuxDetailRow ne les acceptera pas, le test est donc inévitable si tu gardes un fonctionnement similaire.
Si tu peux utiliser un dataset typé pour ton premier dataset, tu contournes le problème car tu peux directement accéder aux champs (tout l'intérêt des DataSet typés) qui seront du bon type (int, string...) et pas du type object comme quand tu as utilisé par exemple DTSetAux.Tables["DevisAux"].Rows[k][4]
Si tu peux enlever le "null autorisé" sur les champs de ta table, en leur mettant par exemple une valeur par défaut, tu n'auras plus ton problème non plus.

Sinon, simple question : pourquoi ne pas utiliser tout simplement la méthode Copy() de DataTable?

mardi 21 octobre 2008 à 11:13:05 | Re : remplir un dataset avec une valeur null

Amelie_29

NomDataset.Tables[

"NomMatable" ].Columns[ "NomColonne" ].AllowDBNull = true ;


Si un champ de ta table est null : dans le dataset la valeur du champ sera égale à Dbnull.Value


mardi 21 octobre 2008 à 11:46:32 | Re : remplir un dataset avec une valeur null

bellak

bonjour ,
pourquoi ne pas utiliser tout simplement la méthode Copy() de DataTable?
j'ai deja essayé de mettre DataTable.Merge() mais le probleme et si vous voyez je collecte les enregistrements a partir de la deuxieme colonne , et meme je collecte que certains Rows .
et pour :
NomDataset.Tables["NomMatable"].Columns[ "NomColonne"].AllowDBNull = true;
cette propriete indique si la valeur null est autorisee ou non et par defaut c'est true , donc inutile .
pour le moment la meilleure solution c'est les DataSet typés .
mardi 21 octobre 2008 à 14:56:23 | Re : remplir un dataset avec une valeur null

bellak

Réponse acceptée !
Re ,
j'ai trouvé une solution sans passer par les DataSet typés mais je ne sais pas si c'est la bonne et la propre la solution :

for

(int k = 0; k < DTSetAux.Tables["DevisAux"].Rows.Count; k++)
{
DataRow Row = dtSet.AuxDetail.NewRow();
for (int l = 0; l < 5; l++)
{
Row[l] = DTSetAux.Tables[
"DevisAux"].Rows[k][l + 1];
}
dtSet.AuxDetail.Rows.Add(Row);
}
merci .


Cette discussion est classée dans : rows, tables, tostring, dtsetaux, devisaux


Répondre à ce message

Sujets en rapport avec ce message

transac SQL [ par philo71 ] Bonjour,Je suis entrain de développer une application transac SQL sur sql serveur en C#,apres l'appel d'un proc stock (procédure stockée) , le program Lire et Affichage des données dans un FRM [ par drcmomo ] Bonjour tout le monde , J'ai un petit gros probléme(mdr)J'ia cette fonction dans mon FRM Qui me permet en cliquant sur mon Lookup d'afficher toutes le problème avec dataGridView vers textbox, combobox [ par suethi75 ] Bonsoir tout le monde, Voila, j'ai fais un formulaire dans lequel j'ai un dataBridView, je remonte dans le dataBridView des données de la base, ensuit Chemin d'accé d'un document (PDF, Word, Image,..) [ par Azouzia ] Salut à tous[^^happy13], Je vous décrit le principe de mon application intitulé gestion documentaire; Je vient de créer une arboresence qui contient d listbox et connexion DB [ par waspy59 ] bonjour a tous, Voila, j'ai une appli dans laquelle une listbox liste tout les elements d'un champ d'une datatable. jusque la ca fonctionne tous les La référence d'objet n'est pas définie à une instance d'un objet. [ par fatine88 ] salut, je developpe avec l'asp.net (c#), j'ai plusieurs dropdownlist dans mon code et lorsque j'utilise "String EvaluéMat = DropDownList13.SelectedIte c# lire le contenu des tables d'une base de données mdb [ par naoual68 ] J'ai une base de données avec l'extension mbd (societe.mdb) qui se compose de plusieurs tables (clients, fournisseurs...), je veux lire les données de Gridview + checkbox ? [ par yosboss ] Bonjour, alors je suis entrain de développer une application ASP.NET en C#.. je veux afficher un GridView lié sqlDataSource en ajoutant un colonne d Generateur d'instruction database [ par romain60112 ] Bonjours à tous, Je suis sur un projet C# 'Application Windows' où je dispose d'une database (DB) avec quelques tables (3). Je souhaite mettre à jour prb listview avec condition [ par fl2010 ] bonjour, comment remplir une listview dynamiquement. je veux remplir une ligne d'une listview a partir d'une base de donnée et qui respect une conditi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,888 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales