Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 09h54   #1
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
Par défaut Nbre d'articles sélectionnés

Bonjour
Au moyen d'une requête qui sélectionne sur un critère; je voudrai récupérer le nombre dans une variable VBA.

AD
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h34   #2
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 256
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 256
Points : 1 872
Points : 1 872
Bonjour,
Il y a la variable .recordcount pour cela (qui selon les requêtes peut parfois nécessiter d'abord un .movelast), ou aussi
Code :
dcount("*","matable","mescritères")
qui est équivalent à
Code :
select count(*) from matable where mescritères
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 11h25   #3
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
merci Nico
mais je n'arrive pas à mettre en oeuvre la commande ds VBA.
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 11h46   #4
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 256
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 256
Points : 1 872
Points : 1 872
2 exemples :

Code :
1
2
Set rsa = CurrentDb.OpenRecordset("SELECT distinct cd_adrs FROM blc_lg inner join cdeVT on blc_lg.cd_cde=cdeVT.cd_cde WHERE cd_adrs>0 and cd_blc=" & cd, dbOpenSnapshot)
i = rsa.RecordCount
Code :
i = dcount("*","blc","cd_blc=" & cd)
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 13h22   #5
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
voila le code que j'ai fait à partir du tien :
Code :
1
2
Dim sql$: sql$ = "SELECT count(*) FROM films where norep=9;"
Set rs = dbsCurrent.OpenRecordset(sql$)
Je récupère 1 dans "rs.RecordCount"; alors que je devrais tourner autour de 100.
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h56   #6
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 256
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 256
Points : 1 872
Points : 1 872
Comme indiqué plus haut :
Citation:
selon les requêtes peut parfois nécessiter d'abord un .movelast


Oups j'ai répondu un peu vite

Pour utiliser recordcount il faut faire :
Par contre ce code renvoie toujours un seul enregistrement qui contient le nombre compté dans x :
Code :
select count(*) as x...
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 16h28   #7
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
OK
merci Nico
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h09   #8
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
J'ai bien trouvé une solution, mais elle me parait fastidieuse; en passant par un query temporaire. Voila le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Function nombre(nr%) As Integer
    Const nom_query = "query_temp"
    Dim qdf As querydef, dbs as database, rs as recordset
    Dim sql$: sql$ = "SELECT count(*) FROM films where norep=" & nr%
    Set dbs = CurrentDb
    Set qdf = dbs.CreateQueryDef(nom_query, sql$)
    DoCmd.OpenQuery nom_query
    Set rs = dbs.QueryDefs(nom_query).OpenRecordset
    nombre = rs.Fields(0).Value
    DoCmd.Close acQuery, nom_query
    DoCmd.DeleteObject acQuery, nom_query    'supprime la requête
End Function
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h14   #9
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 256
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 256
Points : 1 872
Points : 1 872
Effectivement pour avoir juste le nombre d'enregistrements il est possible de faire plus simple :

Code :
1
2
3
Function nombre(nr%) As Integer
    nombre = dcount("*", "films", "norep=" & nr%)
End Function
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h20   #10
Membre à l'essai
 
Homme alain
retraité
Inscription : juillet 2011
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme alain
Âge : 66
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 65
Points : 23
Points : 23
Envoyer un message via MSN à papyxy Envoyer un message via Yahoo à papyxy Envoyer un message via Skype™ à papyxy
là je suis scotché!
Je ne connaissais pas la fonction "DCount".
C'était si simple.

encore merci
papyxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h24.


 
 
 
 
Partenaires

Hébergement Web