RecordCount

Signaler
Messages postés
36
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
10 novembre 2010
-
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
-
Bonjour,

J'ai un petit souci avec un code. j'essaie de récupérer le nombre total d'enregistrement (afin de déterminer le dernier numéro auto d'une table client généré par access)

Voici le code:

cnn.Execute "INSERT INTO CLIENT (Nomcli,PrenomCli) values ('Nom','Prenom')"
RSQL = "SELECT * FROM CLIENT"
Set RS = New ADODB.Recordset
RS.Open RSQL, cnn, adOpenDynamic, adLockOptimistic
Dim TotalEnreg As Integer
TotalEnreg = RS.RecordCount

Le souci, c'est qu'au final, ma variable TotalEnreg contient "-1" et non pas le nombre total d'enregistrement.

Quelqu'un sait-il ou j'ai pu me tromper?


Merci,

Ps: c'est fait 5 ans que j'ai pas pissé une ligne de code alors je suis un peu voir totalement rouillé!! lol

6 réponses

Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Tu utilises Access ou SQL Server ?
J'ai eu ce problème sur un projet, avec Access, j'avais le bon total, mais avec SQL Server, j'ai dû compter moi même.

Pour rappel, Il y a aussi :
SELECT Count(*) FROM MaTable WHERE Macondition
Et dans l'unique donnée retournée, tu as le nombre de ligne.

Mon site
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Ta méthode est correcte, même si, comme le dit NHenry, relire toutes les données pour n'en récupérer que la quantité, est un peu du gaspillage.

Essaye avec cette syntaxe :
    Set RS = New ADODB.Recordset
    RS.CursorLocation = adUseClient
    RS.Open RSQL, cnn, adOpenStatic, adLockReadOnly

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
36
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
10 novembre 2010

Bonsoir,

Merci pour vos deux réponses (et désolé si je réponds si tard, j'étais en déplacement)

j'ai testé les deux méthodes:

avec celle d'Henry, j'ai eu qque soucis parceque je ne me rappelle plus comment on balance le contenu unique d'un recordset dans une variable (shameon me!!!)

par contre, pas de souci avec la méthode de jack, ca fonctionne, meme si je ne comprends absolument pas en quoi consiste la ligne "rs.cursorlocation = aduseclient"

En fait, je me demande quelle est la façon la plus propre de récupérer le numauto crée par Access après un insert into.

Beaucoup parle de @@identity dans la requête, mais beaucoup critique aussi cette méthode.

mais je suis d'accord: tout compter pour juste obtenir le dernier numéro crée, c'est peut etre pas le plus propre à faire...
Messages postés
36
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
10 novembre 2010

c'est ce qu'il me semblait : tout fonctionne à condition que je ne supprime aucune ligne de ma table Client.

si j'en supprime une, je n'obtiendrai plus le dernier numéro crée lol(ce qui est logique lol)..

Vais craquer, je sais pas comment faire...
Messages postés
1
Date d'inscription
jeudi 28 octobre 2010
Statut
Membre
Dernière intervention
1 novembre 2010

slt tous les fans de vbfrance vraiment ses un grand plaisir de découvrire le site.
grace ace site je pourai faire keke chose
mais j'ai un probleme de connexion de ma base en access sur ADO a chaque foi ke je tante on me di ke le foramat mdb nai pas reconu
aidez mois.
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
ajaksow, merci de poster ta question dans un nouveau sujet, stp :)
Et si tu veux de l'aide, montre aussi comment tu t'y connectes (dans le sujet que tu aura créé bien entendu.

Mon site