Affichage d'une valeur qui dépend du résultat d'une requête

asma07 Messages postés 10 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 31 octobre 2012 - 17 sept. 2009 à 00:48
asma07 Messages postés 10 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 31 octobre 2012 - 21 sept. 2009 à 12:23
Salut,comment dois-je faire pour afficher le numéro max lorsque la date que j'ai choisie existe dans la table VENTE et afficher 0 sinon.Mon code affiche toujours 0:

SqlConnection con = new SqlConnection("Data Source=PC-DE-HP;Initial Catalog=entreprise1;Integrated Security=True");
if (calendarCombo1.Text != "")
{
Int64 Num = 0;
SqlCommand com = new SqlCommand("SELECT DISTINCT DATE_VENTE FROM VENTE ", con);
con.Open();
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
if (reader.GetDateTime(reader.GetOrdinal("DATE_VENTE")).ToString() == calendarCombo1.Text)
{
SqlConnection con1 = new SqlConnection("Data Source=PC-DE-HP;Initial Catalog=entreprise1;Integrated Security=True");
SqlCommand com1 = new SqlCommand();
com1.Connection = con1;
com1.CommandText "SELECT MAX(NUMERO) AS num FROM VENTE WHERE (DATE_VENTE '" + calendarCombo1.Text + "')";
da = new SqlDataAdapter(com1);
ds = new DataSet();
da.Fill(ds);
con1.Open();
Num =Int64.Parse(com1.ExecuteScalar().ToString());
con1.Close();
}

}

reader.Close();
con.Close();
MessageBox.Show(Num.ToString());

}

4 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
20 sept. 2009 à 09:47
Bonjour,

Il est possible que le probleme vienne du formatage de la date dans la requette, utilise plutot des parametres pour passer les valeurs, là tu sera certain du formatage.

Si non je ne comprends pas bien le code, pourquoi faire une premiere requette, qui semble retourner toutes les dates, alors que tu connais dèjà la date à filtrer ? tu devrais pouvoir faire ça avec une seule requete.


C# is amazing, enjoy it!
0
asma07 Messages postés 10 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 31 octobre 2012
20 sept. 2009 à 12:02
Bonjour Robert33,
Je veux vous expliquer mon problème:Pour chaque vente on associe un numéro d'ordre(correspondant au nombre des ventes déjà enregistrées le jour de la vente).Alors lorsque je veux insérer une ligne dans la table vente(NUMERO,Fournisseur,Client,DATE_VENTE),je fais un test si on a des ventes pour la date que je tape ou non.Si oui,je cherche le numéro max des ventes correspondantes à cette date càd le nombre des ventes pour cette date.La nouvelle vente prend comme NUMERO le num max+1.Sinon,càd c'est la 1ère vente pour cette date, le NUMERO =1.
J'espére que c'est clair.
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
20 sept. 2009 à 22:20
Bonsoir Asma

Oui, j'avais bien compris le probleme.
mais tu peux quand même le faire en une seule requette.

Exemple, en utilisant la base northwind de MS SQL.

private void button1_Click(object sender, System.EventArgs e)
{
SqlConnection con = new SqlConnection("data source=(local);initial catalog=Northwind;Integrated Security=True");
con.Open();
// utilisation d'un parametre '@date' pour être certain du formatage de la date
SqlCommand command new SqlCommand("SELECT MAX(OrderID) AS OrderID FROM Orders WHERE (OrderDate @date)",con);
command.Parameters.Add ("@date",dateTimePicker1.Value.Date);


object retValue = command.ExecuteScalar();
if (retValue == System.DBNull.Value  )
MessageBox.Show(string.Format("Pas de commande pour le {0}",dateTimePicker1.Value.Date.ToShortDateString()));
else
{
int MaxtOrderId=(int)retValue;
MessageBox.Show(string.Format("le plus grand numero de commande pour le {0} est :{1}",dateTimePicker1.Value.Date.ToShortDateString(),MaxtOrderId ));
}

}



C# is amazing, enjoy it!
0
asma07 Messages postés 10 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 31 octobre 2012
21 sept. 2009 à 12:23
Merci Robert.
0
Rejoignez-nous