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

Signaler
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Statut
Membre
Dernière intervention
7 juin 2012
-
Messages postés
20
Date d'inscription
dimanche 6 mai 2012
Statut
Membre
Dernière intervention
7 juin 2012
-
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

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