TrafMaxime
Messages postés288Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention26 janvier 2012
-
26 sept. 2006 à 12:41
TrafMaxime
Messages postés288Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention26 janvier 2012
-
27 sept. 2006 à 13:51
Salut les pros de la prog,
Dans une option 'statistique' de mon programme, je parcours les ventes dans une portion de date, pour un type d'appareil et pour un client.
Le fichier en question englobe tous les clients et est assez lourds (8000 enregistrements..), et ma requête se présente ainsi :
Dim sr1 As String = "select rechnapparat.* from rechnapparat where artikelnr like '" + sn + "' and rdatum < #" + d1 + "# and rdatum >= #" + d2 + "#" + kd + ""
Je parcours donc la table en entier à chaque fois et c'est assez long.
L'idée serait de charger un dataset avec les données du client dans un premier temps, et faire des recherches dans celui-ci en fonction du type d'appareil et de la date, mais je ne connais pas de méthodes liées au dataset qui me permet une recherche rapide dans celui-ci.
Toute aide est la bienvenue, en espérant trouver une âme charitable...
Merci,
TrafMaxime
Messages postés288Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention26 janvier 20121 27 sept. 2006 à 13:48
Ok...
Pour ceux qui passeraient par là et qui auraient des petits problèmes de temps de calcul dans leurs requêtes : ne surchargez pas vos requêtes !!
Il est largement préférable de charger un dataset avec un maximum de données
(celles des ventes du client en question dans mon exemple), et de traiter celles-ci au cas par cas de la forme :
for i = o to tot-1
if dataset.tables(0).rows(i)("rdatum")<d1 and ...then
if etc
end if
end if
next
Plutôt que de mettre tous les filtres dans la requête principale et d'interroger toute la base de donnée à chaque fois, comme dans l'exemple plus haut.
TrafMaxime
Messages postés288Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention26 janvier 20121 26 sept. 2006 à 16:45
Sérieux ?
Ok, je vais déjà faire ça, merci...
Mais je me dis quand même qu'interroger la base2données en entier à chaque fois n'est pas la solution.
Ce qu'il faudrait se serait une requête que je pourrais exécuter directement sur le dataset chargé avec les données propre au client seul.
Je crois que demain, je vais carément remplir une table access spéciale client, tout y écrire, et y lancer les requêtes dates & numéro d'appareil ensuite... advienne que pourra, ça va se jouer au sprint entre 2 escargots..
.Maytheforcebewithyou.Maxime.
TrafMaxime
Messages postés288Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention26 janvier 20121 27 sept. 2006 à 13:51
Pour soph :
les requêtes en .* jouent un rôle infime (gain de -de 1% du temps de calcul), mais c'est une histoire de grains de sable qui font des places gigantesques..
j'accepte aussi ta réponse.