Caster et affecter la valeur d'une cellule de datagridview à une varible

Résolu
toutouyti Messages postés 18 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 7 juin 2012 - 16 mai 2012 à 16:42
toutouyti Messages postés 18 Date d'inscription dimanche 6 mai 2012 Statut Membre 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]);

5 réponses

toutouyti Messages postés 18 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 7 juin 2012 2
19 mai 2012 à 15:50
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]);
}
3
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
16 mai 2012 à 16:51
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]); 
} 
}
0
toutouyti Messages postés 18 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 7 juin 2012 2
16 mai 2012 à 17:17
merci mais le programme m'affiche 3 erreurs pareil:
'System.DBNull' est un 'type', qui n'est pas valide dans le contexte donné'
0
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
17 mai 2012 à 11:37
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]); 
} 
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toutouyti Messages postés 18 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 7 juin 2012 2
19 mai 2012 à 15:59
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 .
0
Rejoignez-nous