Caster et affecter la valeur d'une cellule de datagridview à une varible [Résolu]

Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Dernière intervention
7 juin 2012
- - Dernière réponse : toutouyti
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Dernière intervention
7 juin 2012
- 19 mai 2012 à 15:59
Bonjour à tous
Je souhaite parcourir une datagridview et affecter la valeur de chaque cellule de quelques colonnes a une variable mais le problème c'est que j'ai quelque cellule vide.
Voila mon code
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if(ds.Tables[0].Rows[i][6]!=null)
gen=Convert.ToInt32(ds.Tables[0].Rows[i][6]);
}
for (int j = 9; j <=20; j++)
{
if(ds.Tables[0].Rows[i][j]!=null)
{
of_mois=Convert.ToDouble(ds.Tables[0].Rows[i][j]);
}
}
for (int k = 45; k <= 56; k++)
{
if(ds.Tables[0].Rows[i][k]!=null)
{
Cmd=Convert.ToDouble(ds.Tables[0].Rows[i][k]); }
}
}
Mais sa marche pas lord de l'exécution le programme m?affiche ce message
« Impossible d'effectuer un cast d'un objet de DBNull en d'autres types. »
Pour c deux ligne :
of_mois=Convert.ToDouble(ds.Tables[0].Rows[i][j]);
Cmd=Convert.ToDouble(ds.Tables[0].Rows[i][k]);
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Dernière intervention
7 juin 2012
3
Merci
merci cbp Tupad
j'ai trouvé une solution :
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if(Program.ds.Tables[0].Rows[i]["STOCK_GEN"].ToString()!= "")
{ gen=Convert.ToInt32(Program.ds.Tables[0].Rows[i]["STOCK_GEN"]);
}

for (int j = 0; j < Program.ds.Tables[1].Columns.Count; j++)
{
if(Program.ds.Tables[1].Rows[i][j].ToString() == "")
{
of_mois =0;
}
else
if (Program.ds.Tables[1].Rows[i][j].ToString() != "")
{
of_mois=Convert.ToDouble(Program.ds.Tables[1].Rows[i][j]);
}
}
for (int k=0;k<Program.ds.Tables[2].Columns.Count; k++)
{
if(Program.ds.Tables[2].Rows[i][k].ToString() == "")
{
cmd =0;
}
else
if(Program.ds.Tables[2].Rows[i][k].ToString() != "")
{
cmd = Convert.ToDouble(Program.ds.Tables[2].Rows[i][k]);
}

Merci toutouyti 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de toutouyti
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
27 août 2012
0
Merci
Utilise le code suivant:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
{ 
if(ds.Tables[0].Rows[i][6]!=null && ds.Tables[0].Rows[i][6]!= System.DBNull ) 
gen=Convert.ToInt32(ds.Tables[0].Rows[i][6]); 

for (int j = 9; j <=20; j++) 
{ 
if(ds.Tables[0].Rows[i][j]!=null && ds.Tables[0].Rows[i][j]!= System.DBNull )
of_mois=Convert.ToDouble(ds.Tables[0].Rows[i][j]); 
} 
for (int k = 45; k <= 56; k++) 
{ 
if(ds.Tables[0].Rows[i][k]!=null && ds.Tables[0].Rows[i][k]!= System.DBNull )
Cmd=Convert.ToDouble(ds.Tables[0].Rows[i][k]); 
} 
}
Commenter la réponse de Tupad
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Dernière intervention
7 juin 2012
0
Merci
merci mais le programme m'affiche 3 erreurs pareil:
'System.DBNull' est un 'type', qui n'est pas valide dans le contexte donné'
Commenter la réponse de toutouyti
Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
27 août 2012
0
Merci
Alors prends plutôt celui-la:

for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
{ 
if(ds.Tables[0].Rows[i][6]!=null && !ds.Tables[0].Rows[i][6] is System.DBNull ) 
gen=Convert.ToInt32(ds.Tables[0].Rows[i][6]); 

for (int j = 9; j <=20; j++) 
{ 
if(ds.Tables[0].Rows[i][j]!=null && !ds.Tables[0].Rows[i][j] is System.DBNull )
of_mois=Convert.ToDouble(ds.Tables[0].Rows[i][j]); 
} 
for (int k = 45; k <= 56; k++) 
{ 
if(ds.Tables[0].Rows[i][k]!=null && !ds.Tables[0].Rows[i][k] is System.DBNull )
Cmd=Convert.ToDouble(ds.Tables[0].Rows[i][k]); 
} 
}
Commenter la réponse de Tupad
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Dernière intervention
7 juin 2012
0
Merci
maintenant je ne peut pas accéder a la basse de donnée, je vais essayer avec votre solution lundi. et merci une deuxième fois .
Commenter la réponse de toutouyti

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.