Pb de format d'un dateTimePicker.
Bonjour tout le monde,
Voila j'ai une fenêtre dans le quelle on choisit le nom de l'intervenant via une comboBox. Puis 2 DateTimePicker de format "Short" et un label qui correspond au nombre d'intervention effectuée par l'intervenant choisi durant la période choisi(par les dataTimePicker).
Pour cela j'ai créé le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
SqlConnection connection;
SqlCommand command;
SqlDataReader rader;
connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=Distrib;Integrated Security=SSPI");
command = new SqlCommand("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)) as NbInterEffectue FROM INTERVENTION, OPERER, INTERVENANT WHERE INTERVENTION.IN_NUMINTER=OPERER.O_NUMINTER AND OPERER.O_CODVENAN=INTERVENANT.IT_CODVENAN AND INTERVENANT.IT_NOMVENAN = '" + NomIntervenant.Text + "' AND IN_NUMINTER BETWEEN '" + dateTimePicker1.Format.ToString("yyyy/MM/dd") + "' AND '" + dateTimePicker2.Format.ToString("yyyy/MM/dd") + "'", connection);
connection.Open();
try
{
rader = command.ExecuteReader();
try
{
while (rader.Read())
NbInterEffectuée.Text = Convert.ToString(rader["NbInterEffectue"]);
}
finally
{
rader.Close();
}
}
finally
{
connection.Close();
} |
Mon problème est lorsque j'exécute mon application, il m'affiche l'erreur suivante :
Citation:
Une exception non gérée du type 'System.FormatException' s'est produite dans mscorlib.dll
Informations supplémentaires*: La chaîne de format ne peut être que "G","g","X","x","F","f","D" ou "d".
et me surligne en vert
Code:
command = new SqlCommand("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)) as NbInterEffectue FROM INTERVENTION, OPERER, INTERVENANT WHERE INTERVENTION.IN_NUMINTER=OPERER.O_NUMINTER AND OPERER.O_CODVENAN=INTERVENANT.IT_CODVENAN AND INTERVENANT.IT_NOMVENAN = '" + NomIntervenant.Text + "' AND IN_NUMINTER BETWEEN '" + dateTimePicker1.Format.ToString("yyyy/MM/dd") + "' AND '" + dateTimePicker2.Format.ToString("yyyy/MM/dd") + "'", connection);
Faut savoir que IN_NUMINTER est de la forme : yyyy/MM/dd c'est pour ça que j'ai mit
Code:
dateTimePicker2.Format.ToString("yyyy/MM/dd")
Mais je vois pas par quoi remplacer yyyy/MM/dd ??
Je vous remercie d'avance pour votre aide!!
réponse à SaumonAgile et à varod
Voila j'ai essayé avec une requête paramétrée mais mon problème c'est que ça fonctionne pas.
Voici le code que ça me donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| SqlConnection connection;
SqlCommand command;
SqlDataReader rader;
connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=Distrib;Integrated Security=SSPI");
SqlParameter paramNomIntervenant = new SqlParameter("@NomIntervenant", SqlDbType.Char, 20);
paramNomIntervenant.Value = NomIntervenant.Text;
SqlParameter paramDateMin = new SqlParameter("@DateMin", SqlDbType.DateTime, 8);
paramDateMin.Value = dateTimePicker1.Text;
SqlParameter paramDateMax = new SqlParameter("@DateMax", SqlDbType.DateTime, 8);
paramDateMax.Value = dateTimePicker2.Text;
string sql = ("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)) as NbInterEffectue FROM INTERVENTION, OPERER, INTERVENANT WHERE INTERVENTION.IN_NUMINTER=OPERER.O_NUMINTER AND OPERER.O_CODVENAN=INTERVENANT.IT_CODVENAN AND INTERVENANT.IT_NOMVENAN = '@NomIntervenant' AND IN_NUMINTER BETWEEN '@DateMin' AND '@DateMax'");
command = new SqlCommand(sql, connection);
command.Parameters.Add(paramNomIntervenant);
command.Parameters.Add(paramDateMin);
command.Parameters.Add(paramDateMax); |
Lorsque je suis en mode debbug et ke je regarde les ".Value" alors il me donne bien la valeur de mes paramètres.
merci d'avance!!