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

toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 16 mai 2012 à 16:42 - Dernière réponse : toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention
- 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 

5 réponses

Répondre au sujet
toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 19 mai 2012 à 15:50
+3
Utile
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]);
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de toutouyti
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 16 mai 2012 à 16:51
0
Utile
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
toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 16 mai 2012 à 17:17
0
Utile
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
Tupad 239 Messages postés lundi 5 décembre 2005Date d'inscription 27 août 2012 Dernière intervention - 17 mai 2012 à 11:37
0
Utile
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
toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 19 mai 2012 à 15:59
0
Utile
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.