begin process at 2010 02 10 05:35:40
  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 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 checkedlistbox [ par manelfeki ] Salut, j'aie un petit probleme: j'aie un datagirdview qui contien deux colonnes un pour le matrecule personne et l'autre pour la liste des vue qu"il p datagridview [ par manelfeki ] salut, j'aie un probleme apres l'execution de cette code : private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) Mon code est trop lent ! [ par alexbesn ] Bonjour à tous. J'ai écris du code mais il est beaucoup trop lent, j'aurai besoin de l'avis d'experts ! Je souhaiterai écrire un programme qui vérif Threading progress bar traitement [ par kmtaz ] Bonjour, Dans mon programme on peut consulter des tables sql grâce à un bouton. Comme certaines tables contiennent énormément de lignes (+700 000), l Connaitre le numéro de la ligne sélectionnée (Datagridview / Dataset) [ par alexbesn ] Bonjour.J'ai un DataGridview que je remplis avec mon Dataset. Ce que je cherche c'est supprimer la ligne que l'utilisateur va sélectionner dans le dat


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,546 sec (3)

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