Stocker des valeurs temporairement , les trier pour les afficher clasée
Bonjour a tous.
Voila j'ai encore un petit soucis:oops:
Je veux faires des statistique de ma table "historique".
j'aimerais qu'il m'affiche le produit le plus vendu.
Donc j'avais dans l'idée de prendre la reference du produit ainsi que la quantité , de faire un update de la quantité qd il retrouve la meme référence du produit. Cette partie est codée et marche :king:
Voici le code :
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| SQLQuery1->Active=false;
SQLQuery1->SQL->Clear();
AnsiString sql("SELECT * FROM historique");
SQLQuery1->SQL->Add(sql);
SQLQuery1->Open();
int Resultat= SQLQuery1->RecordCount;
if (Resultat>0) // Si Resultat est > 0 alors c'est quil y a au moins une reference
{
//ShowMessage("il existe un panier pour cette date");
ListView1->Items->Clear();
for (int i = 0; i < Resultat; i++)
{
int prodentree = 0;
// récupération des données
//SQLQuery1->Active=true;
AnsiString quantite = SQLQuery1->FieldValues["Quantite"];
AnsiString referenceproduit = SQLQuery1->FieldValues["RefProduit"];
AnsiString type = SQLQuery1->FieldValues["Type"];
AnsiString marque = SQLQuery1->FieldValues["Marque"];
AnsiString model = SQLQuery1->FieldValues["Model"];
// fin récupération des données
for (int i = 0; i < ListView1->Items->Count; i++) // checker tt les items du panier
{
AnsiString refpanier = ListView1->Items->Item[i]->SubItems->Strings[0];
if (refpanier == referenceproduit) // si la reference panier est deja dedans
{
// update quantité
AnsiString quantitepanier = ListView1->Items->Item[i]->Caption;
double quantitetotal = quantitepanier.ToDouble() + quantite.ToDouble();
AnsiString quantitefinal(quantitetotal);
ListView1->Items->Item[i]->Caption = quantitefinal;
prodentree = 1;
SQLQuery1->Next();
}
}
if (prodentree == 0)
{
TListItem *Item = ListView1->Items->Add();
Item->Caption = quantite;
Item->SubItems->Add(referenceproduit);
Item->SubItems->Add(type);
Item->SubItems->Add(marque);
Item->SubItems->Add(model);
SQLQuery1->Next();
}
}
}
else // pas de resultat
{
} |
Je l'ai ai mise dans un ListVieuw je sais pas si j'ai bien fait car maitenant que j'ai tt mes référence de produit avec la quantité corespondante, j'aimerais les classé par odre croisant de quantité pour ensuite les reprendre et les afficher dans un TChart.
et je vois pas comment faire pour trier ces valeurs.
Oeut être est je mal placée mes donnée, fallait peut etre pas utilisé un TListVieuw mais un autre compo qui permet de trier directement les valeurs par odre croisant ?
Merci de vos conseils