Recordcount/ado/Access help [Résolu]

Signaler
Messages postés
190
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
29 avril 2009
-
Messages postés
190
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
29 avril 2009
-
bjr
j'ai un pb avec recordcount
voici mon code:
Dim x As Integer, Z As Integer
Dim y As String, W As String
Dim adoconnection As ADODB.Connection
Dim adorecordset As ADODB.Recordset
Dim CONNECTSTRING As String
Set adoconnection = New ADODB.Connection
Set adorecordset = New ADODB.Recordset
Dim resultat As String
Dim NOM2 As String


Randomize
CONNECTSTRING = "provider=microsoft.jet.oledb.4.0;" & "data source=c:\jeucalin\gages.mdb"
adoconnection.Open CONNECTSTRING '+le mot de passe

If truc "F" Then W "A"
If bidule "H" Then W "B"

Z = adorecordset.RecordCount
x = (Int(Rnd * Z)) 'Nb aléatoire
resultat = "select * from " & (W) & " where numéro=" & x
adorecordset.Open resultat, adoconnection, , , adCmdText

Text1 = adorecordset!gage

Je n'arrive pas à déterminer le Z pour qu'il me prenne un enregistrement alléatoire sur ma base.

merci pour votre aide

3 réponses

Messages postés
50
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
12 mai 2007

Déjà dans ton extrait de code tu récupères ton recordcount avant d'ouvrir ton rs donc normal qu'il soit pas initialisé.


Ensuite, il faut faire attention aux options que tu utilises, si tu ouvre ton rs en adOpenForwardOnly, ton recordcount sera à 0 à l'ouverture alors qu'en adOpenStatic il sera bien initialisé. Par contre avec le adOpenStatic les performances sont moins bonnes.

La meilleur solution reste de faire une requete count en adOpenForwardOnly dans un souci de performances.
Ce qui te donnerai :
adorecordset.Open "select count(*) as Nb from " & (W), adoconnection, adOpenForwardOnly, adLockReadOnly
if not adorecordset.EOF then
Z = CInt(adorecordset("Nb"))
adorecordset.close
x = (Int(Rnd * Z)) 'Nb aléatoire
resultat = "select * from " & (W) & " where numéro=" & x
adorecordset.Open resultat, adoconnection, adOpenForwardOnly, adLockReadOnly
end if
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
Attention, il faut que tes numéro dans ta base soit tous contigus !

Il vaut mieux faire :
Z = adorecordset.RecordCount
x = (Int(Rnd * Z)) 'Nb aléatoire
resultat = "select * from " & (W)
adorecordset.Open resultat, adoconnection, , , adCmdText
adorecordset.move(Z)

_

<spa></spa>
Messages postés
190
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
29 avril 2009
1
merci,
au moins sur ce forum,
on est sur d'avoir une réponse, éfficace!
patrik