[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
Créer un fichier PDF de la contribution Imprimer


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
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer


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
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer


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
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


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.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2