Posté le 20 février 2019 - 23:08 |
Bonjour à tou(te)s,
Je viens de faire une découverte qu'il me semble utile de partager avec la communauté.
J'ai développé une application qui me permet d'obtenir assez rapidement des statistiques de vente en fonction de différents critères (exemple : par périodes, familles et types d'articles). Pour extraire les données qui m'intéressent, j'utilise une requête paramétrée dont voici le code. Le résultat alimente un tableau croisé dynamique. Pour info, le fichier des ventes fait plusieurs centaines de milliers d'enregistrements et, bien entendu il comporte les indexes nécessaires pour optimiser les recherches.
SELECT DISTINCT Ventes.Période AS Période, LEFT(Ventes.Période,4) AS Année, RIGHT(Ventes.Période,2) AS Mois, Ventes.Famille AS Famille, SUM(Ventes.MontantNetHT) AS CA, SUM(Ventes.QuantitéNette) AS Quantité, SUM(Ventes.QuantitéNette * Ventes.Poids) AS Volume FROM Ventes WHERE Ventes.Période IN ({rprm_1}) AND Ventes.Famille IN ({rprm_2}) GROUP BY Ventes.Période, LEFT(Ventes.Période,4), RIGHT(Ventes.Période,2), Ventes.Famille ORDER BY Année ASC, Mois ASC, Famille ASC
Lorsque je renseigne au moins un des paramètres, tout va bien et j'obtiens le résultats escomptés. Si je passe la valeur Null à tous les paramètres, la requête boucle alors que, si j'ai bien lu et compris la documentation de HExecuteRequête(), un paramètre Null est ignoré (clause WHERE). J'ai trouvé la parade en créant une autre requête qui me renvoie toutes les valeurs possibles de l'un des paramètres sous la forme "valeur1;valeur2;...;valeurn" et affecte le résultat et tout fonctionne à merveille.
Y-a-t-il quelque chose qui m'échappe ? Quelqu'un a-t-il un retour d'expérience à partager, un conseil à donner ? Je suis preneur car ma méthode me parait pour le moins assez peu orthodoxe.
Merci d'avance pour vos commentaires, suggestions, conseils (et même plus, si affinité). J@ckMessage modifié, 20 février 2019 - 23:09 |
| |
| |
|