Affichage d'une valeur qui dépend du résultat d'une requête
asma07
Messages postés10Date d'inscriptionmardi 11 août 2009StatutMembreDernière intervention31 octobre 2012
-
17 sept. 2009 à 00:48
asma07
Messages postés10Date d'inscriptionmardi 11 août 2009StatutMembreDernière intervention31 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();
}
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 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.
asma07
Messages postés10Date d'inscriptionmardi 11 août 2009StatutMembreDernière intervention31 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.
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 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 ));
}
}