Convertion des puissance de dix et datareader

Résolu
cs_tazagaga Messages postés 31 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 23 février 2009 - 11 déc. 2007 à 17:02
cs_tazagaga Messages postés 31 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 23 février 2009 - 12 déc. 2007 à 20:10
bonjour j'ai une os de derniere minute et faudrait que le probleme soit régler d'ici vendredi.

contexte:
a l'aide d'un datareader je lit une table dans sql server 2005, je prend toute les donnée de la table et je les met dans un tableau html que j'ai construit
(divers traitement des donnée s'execute pendant cette copie)

le probleme est que une colonne "valeur" est de type float et a des donnée de type 123,456e+006
durant la copie apparement mon programme 'saute' purement et simplement ces donnée
comment je peux les traitée.

mes variable sont declaré en "double" car il y a impossibilité de convertir en float (je n'y suis pas arriver)

voila mon code:

int nb = 1;
double valprec, val;
double periodeprec, periode;
string libelleprec, libelle;
string geoprec, geo;
double taux;
double var;
string print_erreur;
string significativite;


taux = 10;

libelleprec = "";
libelle = "";
geoprec = "";
geo = "";
periodeprec = 0;
periode = 0;
valprec = 0;
val = 0;
var = 0;
print_erreur = "";
significativite = "";

Response.Write("\");

Response.Write(\"----
\");

Response.Write(\"" + dr2.GetName(0) + ", \");
Response.Write(\"" + dr2.GetName(1) + ", \");
Response.Write(\"" + dr2.GetName(2) + ", \");
Response.Write(\"" + dr2.GetName(3) + ", \");
Response.Write(\"" + dr2.GetName(4) + ", \");
Response.Write(\"" + "Erreur générée" + ", \");
Response.Write(\"" + "Pourcentage de Variation" + ", \");

Response.Write(\"\");

Response.Write(\"----
\");

while (dr2.Read())
{
Response.Write(\"----
\");

if (dr2.IsDBNull(3))
{
Response.Write(\"" + dr2[0].ToString() + ", \");
Response.Write(\"" + dr2[1].ToString() + ", \");
Response.Write(\"" + dr2[2].ToString() + ", \");
Response.Write(\"" + "NULL" + ", \");
Response.Write(\"" + "NULL" + ", \");
var = 0;
print_erreur = \"pas de donnée valeur\";
valprec = 0;
}
else
{
if (dr2.IsDBNull(4))
{
significativite = \"NULL\";
}

Response.Write(\"" + dr2[0].ToString() + ", \");
libelle = dr2[0].ToString();
int comparelibelle = libelleprec.CompareTo(libelle);
if (comparelibelle == 0)
{
Response.Write(\"" + dr2[1].ToString() + ", \");
geo = dr2[1].ToString();
int comparegeo = geoprec.CompareTo(geo);
if (comparegeo == 0)
{

Response.Write(\"" + dr2[2].ToString() + ", \");
periode = Convert.ToDouble(dr2[2].ToString());
if (periodeprec != periode)
{
val = Convert.ToDouble(dr2[3].ToString());
if (valprec != 0)
{
var = ((val - valprec) / val) * 100;
if (var >= -taux)
{
if (var <= taux)
{
print_erreur = \"OK\";
Response.Write(\"" + dr2[3].ToString() + ", \");
}
else
{
print_erreur = \"Valeur a vérifier\";
Response.Write(\"" + dr2[3].ToString() + ", \");
}
}
else
{
print_erreur = \"valeur a vérifier\";
Response.Write(\"" + dr2[3].ToString() + ", \");
}
Response.Write(\"" + significativite + ", \");
}
else
{
Response.Write(\"" + dr2[3].ToString() + ", \");
Response.Write(\"" + significativite + ", \");
print_erreur = \"valeur de depart\";
var = 0;
}

}
else
{
Response.Write(\"" + dr2[3].ToString() + ", \");
Response.Write(\"" + significativite + ", \");
print_erreur = \"valeur de depart\";
var = 0;
}
}
else
{
Response.Write(\"" + dr2[2].ToString() + ", \");
Response.Write(\"" + dr2[3].ToString() + ", \");
Response.Write(\"" + significativite + ", \");
print_erreur = \"valeur de depart\";
var = 0;
}
}
else
{
Response.Write(\"" + dr2[1].ToString() + ", \");
Response.Write(\"" + dr2[2].ToString() + ", \");
Response.Write(\"" + dr2[3].ToString() + ", \");
Response.Write(\"" + significativite + ", \");
print_erreur = \"valeur de depart\";
var = 0;
}
valprec = Convert.ToDouble(dr2[3].ToString());
}
string var_modif = var.ToString(\"0.##\");
Response.Write(\"" + print_erreur.ToString() + ", \");

Response.Write(\"" + var_modif + ", \");
Response.Write(\"\");

nb++;
/*
libelleprec = libelle;
geoprec = geo;
periodeprec = periode;
valprec = val;
*/

libelleprec = Convert.ToString(dr2[0].ToString());
geoprec = Convert.ToString(dr2[1].ToString());
periodeprec = Convert.ToDouble(dr2[2].ToString());
//valprec = Convert.ToDouble(dr2[3].ToString());

}
Response.Write(\"\");

Response.Write(\"----
\");
Response.Write(\"" + nb + " enregistrements"+", \");
Response.Write(\"\");

Response.Write("
");
dr2.Close();

}
catch (SqlException sqlerr)
{
Response.Write("<table>");
Response.Write("
" + sqlerr.Message.ToString());
}
// Fermeture connection
connexion.Close();

merci d'avance de vos réponse

2 réponses

cs_tazagaga Messages postés 31 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 23 février 2009
12 déc. 2007 à 20:10
bonjour

bien la solution est simple j'ai trouver:
en faite j'ai dit une betise dans mon ennoncé:


le probleme est que une colonne "valeur" est de type float et a des donnée de type 123,456e+006


dans ma colonne valeur mes donnée était de type varchar(50)
donc la solution simple est de changer le type de la colonne en float, et apparement ca regle le probleme

voila désoler d'avoir déranger

a++ all
3
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 déc. 2007 à 18:06
Est-ce que tu as une erreur de type FormatException ? Si c'est le cas c'est que c'est lié à ton séparateur décimal.

Si tu n'as pas d'exception c'est que tu rentres dans un des cas que tu as géré.

::|The S@ib|::
MVP C#.NET
0
Rejoignez-nous