|
[Résolu] Statistiques de Frequentation pour période donnée |
|
Anonyme
|
Bonsoir Nous vous contactons pour obtenir une aide à propos de notre requete d'affichage des statistiques de frequentation. Nous sommes entrain de réécrire notre logiciel de gestion commerciale mais compte tenu de notre jeune expérience , on est bloqué: ----------------------Description du probleme-------------- Nous avons une table Ticket dans laquelle, on a certains attribut comme selltime(heure à la quelle la transaction a été faite), selldate(la date de vente),le Ncaisse qui est la caisse de vente, TotalTTC(montant de la vente). Notre objectif est de déterminer des statistiques de fréquentation pour une période donnée du Lundi à Dimanche On dispose d'une tranche horaire: 08h-12H 12H-16H 16H-20H 20H-23H Pour chaque horaire on calcule le Total TTC et le nombre de vente: Par exemple pour Tranche Horaire Valeur Lundi Mardi Mercredi 08h-12H CA 1500F Vente 4 ----------------------------------------------------------- 12H-16H CA 2500 Vente 10 ----------------------------------------------------------- -------------------Code de notre requete------------------- CATTC, Ventes sont des tableaux de 7 entiers Monjour est une chaîne jourEnEntier est un entier Rs est une Source de Données //montabval est un tableau de Dimension [2] CATTC, Ventes Requete est une chaîne="SELECT Ticket.selldate AS selldate, Ticket.selltime AS selltime, Ticket. CaisseN AS CaisseN , Ticket.TotalTTC AS TotalTTC, count(Ticket.TotalTTC) AS Ventes FROM Ticket WHERE selldate BETWEEN '"+datedebut+"' AND '"+dateFin+" ' and CaisseN='"+Combo_Ticket+"' " //toutes les enregistrements HExécuteRequêteSQL(Rs,hRequêteDéfaut,Requete) HLitPremier(Rs) TANTQUE PAS HEnDehors(Rs) phoraire est une chaîne phoraire=Gauche(Rs.selltime,2) MaDate est une Date =Rs.selldate //DateVersJourEnLettre(MaDate) //Plage horaire de 08h à 12h SI 08<= phoraire <12 ALORS //Monjour =EntierVersJourEnLettre(DateVersEntier(Rs.selldate)) Monjour =DateVersEntier(MaDate) jourEnEntier=Monjour CATTC[jourEnEntier] +=Rs.TotalTTC Ventes[jourEnEntier] +=Rs.Ventes
FIN //Plage horaire de 12h à 16h SI 12<=phoraire< 16 ALORS Monjour =DateVersEntier(MaDate) //Monjour =EntierVersJourEnLettre(DateVersEntier(Rs.selldate)) jourEnEntier=Monjour CATTC[jourEnEntier] +=Rs.TotalTTC Ventes[jourEnEntier] +=Rs.Ventes FIN //Plage horaire de 16h à 20h SI 16<=phoraire< 20 ALORS Monjour =DateVersEntier(MaDate) //Monjour =EntierVersJourEnLettre(DateVersEntier(Rs.selldate)) jourEnEntier=Monjour CATTC[jourEnEntier] +=Rs.TotalTTC Ventes[jourEnEntier] +=Rs.Ventes FIN //Plage horaire de 20h à 23h SI 20<=phoraire< 24 ALORS Monjour =DateVersEntier(MaDate) //Monjour =EntierVersJourEnLettre(DateVersEntier(Rs.selldate)) jourEnEntier=Monjour CATTC[jourEnEntier] +=Rs.TotalTTC Ventes[jourEnEntier] +=Rs.Ventes FIN
HLitSuivant(Rs)
FIN
// Affichage des résultats
TableAjouteLigne(tablefrequ,"08H-12H","CATTC",CATTC[1],CATTC[2],CATTC[3],CATTC[4],CATTC[5],CATTC[6],CATTC[7])
TableAjouteLigne(tablefrequ,"","Ventes",Ventes[1],Ventes[2],Ventes[3],Ventes[4],Ventes[5],Ventes[6],Ventes[7])
TableAjouteLigne(tablefrequ,"12H-16H","CATTC",CATTC[1],CATTC[2],CATTC[3],CATTC[4],CATTC[5],CATTC[6],CATTC[7]) TableAjouteLigne(tablefrequ,"","Ventes",Ventes[1],Ventes[2],Ventes[3],Ventes[4],Ventes[5],Ventes[6],Ventes[7])
TableAjouteLigne(tablefrequ,"16H-20H","CATTC",CATTC[1],CATTC[2],CATTC[3],CATTC[4],CATTC[5],CATTC[6],CATTC[7]) TableAjouteLigne(tablefrequ,"","Ventes",Ventes[1],Ventes[2],Ventes[3],Ventes[4],Ventes[5],Ventes[6],Ventes[7])
TableAjouteLigne(tablefrequ,"20H-23H","CATTC",CATTC[1],CATTC[2],CATTC[3],CATTC[4],CATTC[5],CATTC[6],CATTC[7]) TableAjouteLigne(tablefrequ,"","Ventes",Ventes[1],Ventes[2],Ventes[3],Ventes[4],Ventes[5],Ventes[6],Ventes[7]) ------------------------------------------------------ Amicalement
Contribution le : 15/05/2005 06:28
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Animateur WDF
Inscrit: 26/06/2002 16:24
De wdforge.org
Post(s): 2822
|
Bonjour Vous recherchez le cumul horaire, pour une période et une caisse, par jour et tranche horaire. Un traitement ultérieur permettra alors d'assurrer la ventilation des plages. Pour se faire il faut faire une requête qui groupe les ventes par jour et par caisse... et par HEURES. cSQL est une chaine
cSQL = "SELECT SELDATE AS SELDATE, LEFT(seltime,2) as SELTIME, SUM(TotalTTC) "+...
"FROM Ticket WHERE selldate BETWEEN '"+datedebut+"' "+...
"AND '"+dateFin+"' AND CaisseN='"+Combo_Ticket+"' "+...
"GROUP BY SELDATE,LEFT(seltime,2)"
le résultat se présentera, pour la caisse et la période ainsi : DATE,HH,CUMUL Il suffit alors de parcourir le résultat et grouper, pour les dates satisfaisantes les jours voulus ( DateVersJour), les cumuls horaires par tranches.
Contribution le : 16/05/2005 12:46
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Anonyme
|
Bonjour
C'est avec le parcours qu'on des problemes peut etre un peu plus de detail nous aiderait a voir plus clair. Merci de votre assistance
Contribution le : 16/05/2005 13:46
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Animateur WDF
Inscrit: 26/06/2002 16:24
De wdforge.org
Post(s): 2822
|
Le parcours des requêtes est simple : sSQL est une source de donnée // source pour le résultat
cSQL est une chaine // texte de la requete
cSQL = "SELECT SELDATE AS SELDATE, LEFT(seltime,2) as SELTIME, SUM(TotalTTC) AS CUMUL "+...
"FROM Ticket WHERE selldate BETWEEN '"+datedebut+"' "+...
"AND '"+dateFin+"' AND CaisseN='"+Combo_Ticket+"' "+...
"GROUP BY SELDATE,LEFT(seltime,2)"
// Exécution de la requete texte
SI PAS HExécuteRequêteSQL(sSQL,hRequêteDéfaut,cSQL) ALORS
Erreur(HErreurInfo)
SINON
// Parcours du résultat
HLitPremier(ssql)
TANTQUE PAS HEnDehors(ssql)
//--- traitement d'une ligne de résultat ---
// ligne suivante
HLitSuivant(ssql)
FIN
FIN
Maintenant on peut détailler un peu le regrouppement des informations. Elle arrivent sous la forme DATE,HH,Cumul le tout bien triée comme espéré. Il faut regroupper quotidiennement les heures par tranches horaires il est alors possible d'alimenter un champ table de structure suivante : tTemp[TTDate,TTCumul08,TTCumul12,TTCumul16,TTcumul20] ce tableau donnera tous les cumuls pour la journée voulue. ainsi en remplacement de la ligne "traitement d'une ligne de résultat" on pourrait avoir : iLig = tablecherche(TTDATE,{"ssql.SELDATE",IndRubrique})
SI iLig=-1 ALORS
// La date n'existe pas dans la table
// on crée la ligne en remplissant la colonne date
TableaAjouteLigne(TTemp,{"ssql.SELDATE",IndRubrique})
// on récupère l'indice
iLig=Tableoccurrence(TTemp)
FIN
// Ecrit la valeur cumulée dans la bonne colonne// note : la ligne existe déjà, soit on l'a trouvée soit on l'a créée
SI {"ssql.SELTIME",IndRubrique}<12 alors
TTCumul08[iLig]+={"ssql.CUMUL",IndRubrique}
SINON SI 12<={"ssql.SELTIME",IndRubrique}<16 ALORS
TTCumul12[iLig]+={"ssql.CUMUL",IndRubrique}
SINON SI 16<={"ssql.SELTIME",IndRubrique}<20 ALORS
TTCumul16[iLig]+={"ssql.CUMUL",IndRubrique}
SINON SI 20<={"ssql.SELTIME",IndRubrique} ALORS
TTCumul23[iLig]+={"ssql.CUMUL",IndRubrique}
FIN
A partir de la, il ne s'agit plus que d'interpréter le contenu de la table.
Contribution le : 16/05/2005 17:39
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Anonyme
|
Je tiens tout s'abord à te remercier du fond du coeur de l'effort et le temps dévolu à notre probleme. Pour le tableau, si je comprends bien , elle n'aura que ces colonnes: tTemp[TTDate,TTCumul08,TTCumul12,TTCumul16,TTcumul20]
Merci
Contribution le : 16/05/2005 18:11
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Animateur WDF
Inscrit: 26/06/2002 16:24
De wdforge.org
Post(s): 2822
|
Effectivement. Mais c'est une présentation particulière des choses j'en convient. Je donne un principe : requete + traitement du résultat dans son parcours. L'exemple ainsi obtenu devrait vous mettre sur la voie, sourtout pour ce qui touche à la syntaxe. Bon courage.
Contribution le : 17/05/2005 08:20
|
|
|
Re: Statistiques de Frequentation pour période donnée |
|
Anonyme
|
Merci J'ai fait des modifications dans le code et tout marche bien . Encore une fois, merci infiniment.
Contribution le : 17/05/2005 13:36
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|