Access 97 Probleme de TOP // LIMIT

Access 97 Probleme de TOP // LIMIT - SQL/NoSQL - Programmation

Marsh Posté le 18-06-2015 à 10:28:41    

Bonjour,
 
Je viens soliciter votre aide, je travaille sur un projet auxquel est rattaché une base de données ACCESS 97.
L'affichage et les requetes sont traités via Visual Basic 6.
 
Etant encore novice dans le SQL et les bases de données ( PhpMyAdmin // MySQL )
Nous avons vu en cours qu'il était possible d'utiliser LIMIT ( fonctionnelle sur MySQL seulement ).
 
Après quelques recherche sur internet, j'ai trouvé une " équivalence " , le TOP.
Seulement celui ci ne se revele  utile que si le top est au maximum de 3, au délà tout est selectionnée.
J'ai besoin d'un TOP 100 de mon coté. Connaissez vous une autre méthode, il sera nécessaire aussi de prevoir un order by (Date/Heure) DESC ( pour afficher que les 100 derniers informations ).
 
Voici la requete en question me permettant d'afficher les resultats dans un controle:
 

Code :
  1. expstrSQL = "SELECT TOP 100 * "
  2. expstrSQL = expstrSQL & " FROM Base_Gestion_MQ  ORDER BY Date_Heure DESC"


 
La deuxieme requete contient une erreur d'agregation et je ne comprend pas pourquoi. Si j'enleve la partie Order by, celle ci est accepté mais toujours le probleme du TOP100.
 

Code :
  1. Exploitsql = "SELECT TOP 100 Date_Heure,SUM(consecutifs_SUP) AS Exp_Cons_Sup,Sum(consecutifs_INF)AS Exp_Cons_Inf, SUM(Corrige_SUP='Vrai')*-1 as Exp_Corrige_SUP"
  2. Exploitsql = Exploitsql & " ,SUM(Corrige_INF='Vrai')*-1 as Exp_Corrige_INF FROM Base_GESTION_MQ order by Date_Heure DESC "


 
Je vous remercie d'avance pour votre aide.  :jap:  
 


---------------
"Nous ne devons jamais verser de larmes. Les larmes ne sont rien d'autre que la défaite du corps sur le cœur. Elles constituent la preuve que garder un cœur ne sert à rien d'autre qu'à s'affaiblir"
Reply

Marsh Posté le 18-06-2015 à 10:28:41   

Reply

Marsh Posté le 18-06-2015 à 14:42:55    

Je viens de trouver une astuce qui me permettra de continuer,
 
Je commence par faire une premiere requete ou je compte le nombre de ligne total. Je resors le resultat dans une variable.
 
Je fais ma requete avec un select * ( classique) et filtre au niveau du where avec Numdeligne (champs de la base ) between mavariable - le nombre souhaité et mavariable.
 
Ce n'est peut-être pas très propre par contre ?
 
La premiere requete  

Code :
  1. RecupMaxSQL = "Select Max(NumAuto) as NumMaxAuto From Base_Gestion_MQ "
  2.     RecupMaxSQLGestionManquant = SQL.ExecuteSQL_Select(AdoBase, RecupMaxSQL, "RecuperationNbreLigneMax" )
  3.    
  4.     Dim NumeroMaxBD As Double
  5.     Set RecupMaxTableGestionManquant = RecupMaxSQLGestionManquant.RecordsetSQL
  6.     NumeroMaxBD = RecupMaxTableGestionManquant.Fields("NumMaxAuto" ).Value


 
La seconde requete  

Code :
  1. expstrSQL = "SELECT * FROM Base_Gestion_MQ WHERE NumAuto BETWEEN " & NumeroMaxBD - 99 & " and " & NumeroMaxBD
  2. expstrSQL = expstrSQL & " ORDER BY Date_Heure DESC "


Message édité par kiro40 le 18-06-2015 à 14:45:20

---------------
"Nous ne devons jamais verser de larmes. Les larmes ne sont rien d'autre que la défaite du corps sur le cœur. Elles constituent la preuve que garder un cœur ne sert à rien d'autre qu'à s'affaiblir"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed