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 

Votre réponse

5 réponses

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

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
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
toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 16 mai 2012 à 17:17
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
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
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
toutouyti 20 Messages postés dimanche 6 mai 2012Date d'inscription 7 juin 2012 Dernière intervention - 19 mai 2012 à 15:59
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.