Recordcount/ado/Access help [Résolu]

ecranbleu27 190 Messages postés vendredi 4 juin 2004Date d'inscription 29 avril 2009 Dernière intervention - 2 mars 2006 à 17:43 - Dernière réponse : ecranbleu27 190 Messages postés vendredi 4 juin 2004Date d'inscription 29 avril 2009 Dernière intervention
- 3 mars 2006 à 05:17
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
Afficher la suite 

3 réponses

Neow26 50 Messages postés mercredi 19 mars 2003Date d'inscription 12 mai 2007 Dernière intervention - 2 mars 2006 à 19:25
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 2 mars 2006 à 18:22
0
Utile
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>
ecranbleu27 190 Messages postés vendredi 4 juin 2004Date d'inscription 29 avril 2009 Dernière intervention - 3 mars 2006 à 05:17
0
Utile
merci,
au moins sur ce forum,
on est sur d'avoir une réponse, éfficace!
patrik

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.