Compter les reponses

Ondex - 19 août 2001 à 23:46
valygar Messages postés 1 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 1 août 2004 - 1 août 2004 à 21:33
Salut,

je cherche le moyen de compter le nombre de resultat que j'ai suite a une requete dans une grosse base de donne (300 000 lignes).

J'ai utiliser la method count :

SQLCount = "SELECT COUNT(*) As Compter FROM Biglist Where Colone1 like '%azer%'"
Set RSCount = Base.Execute(SQLCount)

le probleme c'est que parralement j'affiche les resultat
donc j'ai la même requete presque :

SQLAffiche = "SELECT * FROM Biglist Where Colone1 like '%azer%'"
Set RS = Base.Execute(SQLAffiche)

cela me fait donc 2 requete.

Sans la requete de comptage, la page met 3 sec a s'executer, avec la requete de comptage, ça prend 6sec

soit le double pour les plus matheux d'entre vous 8-) .

J'aimerai savoir si il y a une autre metod pour compter les resultat avec une seule requete.

Si cela peux vous aider, je met le code complet de la page.

Merci

@+

<code>
response.expires = -1
response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"
TimeStart = FormatNumber(Timer)
Formul=1

Set Base = Server.CreateObject("ADODB.Connection")
Base.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & Server.mappath("/clubinfo/files") & "/bd1.mdb"

If Request.Form("go") = 1 Then
' NON TERMINER
End if

If Request.Form("go") = 2 Then

If Request.Form("Methode")=1 Then SQLQuery "SELECT * FROM Biglist Where "& Request.Form("Colone") &" '"& Request.Form("Var2") &"'" SQLCount "SELECT COUNT(*) As Compter FROM Biglist Where "& Request.Form("Colone") &" '"& Request.Form("Var2") &"'"
Else
SQLQuery = "SELECT * FROM Biglist Where "& Request.Form("Colone") &" like '%"& Request.Form("Var2") &"%'"
SQLCount = "SELECT COUNT(*) As Compter FROM Biglist Where "& Request.Form("Colone") &" like '%"& Request.Form("Var2") &"%'"
End If
Set RS = Base.Execute(SQLQuery)
Set RSCount = Base.Execute(SQLCount)
Formul=0

End if
Set Multiplie = Nothing

If Formul=1 Then
Response.Redirect "table.htm"
Else
Response.Write "<html><head><title>Les resultats</title></head>Mot 1Temps d'execution de la page : " & FormatNumber(FormatNumber(Timer) - TimeStart) &"s
Il y a "& RSCount("Compter") &" réponse(s)</html>"
End If

Base.Close
Set RS = Nothing
Set Base = Nothing

3 réponses

ReSalut,

c pour dire que (1h30 + tard) j'ai trouver la solution, j'utilise la method RecordCount.

@+
0
Salut,

effectivement c'est une solution :-)

Si tu récupères beaucoup d'enregistrement tu peux aussi essayer d'utiliser l'instruction getrows de ton recordset... cette dernière en un seul appel te transforme l'intégralité du recordset en tableau de variant. Même si ce dernier prend plus de place en mémoire il est beaucoup plus rapide lors de l'accès que l'itération sur le recordset...

De plus tu obtiens automatiquement le nombre de record puisqu'il te suffit de tester la limite UBOUND du tableau.

Un autre point est que pour rassurer ton utilisateur (sil a Ie5) tu peux voir pour lui afficher le tableau au fur et à mesure qu'il est généré. Cela s'effectue en fixant la largeur des colonnes.

Et encore un dernier conseil pour éviter de surcharger ton serveur... tu peux vérifier en cours de route que ton client est toujours connecté avant de procéder à la génération du tableau...
0
valygar Messages postés 1 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 1 août 2004
1 août 2004 à 21:33
oops
0
Rejoignez-nous