dans un formulaire, je contruit une requete contenu dans=20
la variable SQLREQ. J'utilise un recordset (temporaire)=20
pour la r=E9aliser et la place ensuite dans une zone de=20
liste, plac=E9e sur le formulaire "RESULTATS".
cf le code suivant :
'Ouverture d'une requ=E8te pour stockage des r=E9ponses
Dim bds As Database
Dim qdf As QueryDef
Dim rst As Recordset
Dim Nb As Long
Set bds =3D CurrentDb
Set qdf =3D bds.CreateQueryDef("temporaire", SQLREQ)
Set rst =3D bds.OpenRecordset(SQLREQ)
With rst
Nb =3D .RecordCount
End With
'Ouverture du formulaire RESULTATS
Dim stDocName As String
Dim stLinkCriteria As String
stDocName =3D "Formulaire_RESULTATS"
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
'Remplissage de la combo du formulaire RESULTATS
Forms("Formulaire_RESULTATS").ListeResultats.RowSource =3D=20
SQLREQ
'Nombre de r=E9ponses
Forms("Formulaire_RESULTATS").NbRep =3D Nb
Et c'est l=E0 que =E7a se corse !
si ma requ=E8te commence par "SELECT DISTINCT", j'ai mon=20
nbre d'enregistrement correcte dans la valeur NB. Par=20
contre, si je ne met pas le "DISTINCT", NB contient la=20
valeur "1", quelques soit le nbre d'enregistrement=20
contenus dans la combo. Or, j'aimerai ne pas utiliser le=20
distinct ET avoir une valeur correcte dans la variable NB.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno MAZÉPA
Salut Laurent Pourquoi ne pas calculer directement le nombre d'enregistrements concernés, l'expression à utiliser est : DCount(expr, domaine[, critère]) -- Cordialement.
"Laurent" a écrit dans le message de news:13d001c39198$49b21550$ salut à tous.
dans un formulaire, je contruit une requete contenu dans la variable SQLREQ. J'utilise un recordset (temporaire) pour la réaliser et la place ensuite dans une zone de liste, placée sur le formulaire "RESULTATS".
cf le code suivant :
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ) With rst Nb = .RecordCount End With
'Ouverture du formulaire RESULTATS Dim stDocName As String Dim stLinkCriteria As String stDocName = "Formulaire_RESULTATS" DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Maximize
'Remplissage de la combo du formulaire RESULTATS Forms("Formulaire_RESULTATS").ListeResultats.RowSource SQLREQ
'Nombre de réponses Forms("Formulaire_RESULTATS").NbRep = Nb
Et c'est là que ça se corse ! si ma requète commence par "SELECT DISTINCT", j'ai mon nbre d'enregistrement correcte dans la valeur NB. Par contre, si je ne met pas le "DISTINCT", NB contient la valeur "1", quelques soit le nbre d'enregistrement contenus dans la combo. Or, j'aimerai ne pas utiliser le distinct ET avoir une valeur correcte dans la variable NB.
Quelqu'un voit il le pbe et pourrait m'aider ?
Merci
Laurent
Salut Laurent
Pourquoi ne pas calculer directement le nombre d'enregistrements concernés,
l'expression à utiliser est : DCount(expr, domaine[, critère])
--
Cordialement.
"Laurent" <l.chevallier@bigfoot.com> a écrit dans le message de
news:13d001c39198$49b21550$a301280a@phx.gbl...
salut à tous.
dans un formulaire, je contruit une requete contenu dans
la variable SQLREQ. J'utilise un recordset (temporaire)
pour la réaliser et la place ensuite dans une zone de
liste, placée sur le formulaire "RESULTATS".
cf le code suivant :
'Ouverture d'une requète pour stockage des réponses
Dim bds As Database
Dim qdf As QueryDef
Dim rst As Recordset
Dim Nb As Long
Set bds = CurrentDb
Set qdf = bds.CreateQueryDef("temporaire", SQLREQ)
Set rst = bds.OpenRecordset(SQLREQ)
With rst
Nb = .RecordCount
End With
'Ouverture du formulaire RESULTATS
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Formulaire_RESULTATS"
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
'Remplissage de la combo du formulaire RESULTATS
Forms("Formulaire_RESULTATS").ListeResultats.RowSource SQLREQ
'Nombre de réponses
Forms("Formulaire_RESULTATS").NbRep = Nb
Et c'est là que ça se corse !
si ma requète commence par "SELECT DISTINCT", j'ai mon
nbre d'enregistrement correcte dans la valeur NB. Par
contre, si je ne met pas le "DISTINCT", NB contient la
valeur "1", quelques soit le nbre d'enregistrement
contenus dans la combo. Or, j'aimerai ne pas utiliser le
distinct ET avoir une valeur correcte dans la variable NB.
Salut Laurent Pourquoi ne pas calculer directement le nombre d'enregistrements concernés, l'expression à utiliser est : DCount(expr, domaine[, critère]) -- Cordialement.
"Laurent" a écrit dans le message de news:13d001c39198$49b21550$ salut à tous.
dans un formulaire, je contruit une requete contenu dans la variable SQLREQ. J'utilise un recordset (temporaire) pour la réaliser et la place ensuite dans une zone de liste, placée sur le formulaire "RESULTATS".
cf le code suivant :
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ) With rst Nb = .RecordCount End With
'Ouverture du formulaire RESULTATS Dim stDocName As String Dim stLinkCriteria As String stDocName = "Formulaire_RESULTATS" DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Maximize
'Remplissage de la combo du formulaire RESULTATS Forms("Formulaire_RESULTATS").ListeResultats.RowSource SQLREQ
'Nombre de réponses Forms("Formulaire_RESULTATS").NbRep = Nb
Et c'est là que ça se corse ! si ma requète commence par "SELECT DISTINCT", j'ai mon nbre d'enregistrement correcte dans la valeur NB. Par contre, si je ne met pas le "DISTINCT", NB contient la valeur "1", quelques soit le nbre d'enregistrement contenus dans la combo. Or, j'aimerai ne pas utiliser le distinct ET avoir une valeur correcte dans la variable NB.
Quelqu'un voit il le pbe et pourrait m'aider ?
Merci
Laurent
3stone
Salut,
"Laurent" a écrit :cf le code suivant :
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst if not .eof then .movelast Nb = .RecordCount .movefirst end if End With
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------
Salut,
"Laurent" <l.chevallier@bigfoot.com> a écrit :cf le code suivant :
'Ouverture d'une requète pour stockage des réponses
Dim bds As Database
Dim qdf As QueryDef
Dim rst As Recordset
Dim Nb As Long
Set bds = CurrentDb
Set qdf = bds.CreateQueryDef("temporaire", SQLREQ)
Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst
if not .eof then
.movelast
Nb = .RecordCount
.movefirst
end if
End With
--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst if not .eof then .movelast Nb = .RecordCount .movefirst end if End With
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------
Laurent
merci de tout coeur, ça marche impécable !! mais quelle est la raison ? Pourquoi le .Nb seul ne fonctionne t il pas ?
Laurent
-----Message d'origine----- Salut,
"Laurent" a écrit :cf le code suivant :
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst if not .eof then .movelast Nb = .RecordCount .movefirst end if End With
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------
.
merci de tout coeur, ça marche impécable !!
mais quelle est la raison ? Pourquoi le .Nb seul ne
fonctionne t il pas ?
Laurent
-----Message d'origine-----
Salut,
"Laurent" <l.chevallier@bigfoot.com> a écrit :cf le code
suivant :
'Ouverture d'une requète pour stockage des réponses
Dim bds As Database
Dim qdf As QueryDef
Dim rst As Recordset
Dim Nb As Long
Set bds = CurrentDb
Set qdf = bds.CreateQueryDef("temporaire", SQLREQ)
Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst
if not .eof then
.movelast
Nb = .RecordCount
.movefirst
end if
End With
--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
merci de tout coeur, ça marche impécable !! mais quelle est la raison ? Pourquoi le .Nb seul ne fonctionne t il pas ?
Laurent
-----Message d'origine----- Salut,
"Laurent" a écrit :cf le code suivant :
'Ouverture d'une requète pour stockage des réponses Dim bds As Database Dim qdf As QueryDef Dim rst As Recordset Dim Nb As Long Set bds = CurrentDb Set qdf = bds.CreateQueryDef("temporaire", SQLREQ) Set rst = bds.OpenRecordset(SQLREQ)
modifie...
With rst if not .eof then .movelast Nb = .RecordCount .movefirst end if End With
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------
.
3stone
Salut,
mais quelle est la raison ? Pourquoi le .Nb seul ne fonctionne t il pas ?
Si tu ouvre un recordset de cette facon, tu te retrouve (de façon imagée) sur le pas de la porte ;-)
Il faut donc "traverser" le recordset avant de pouvoir compter, ce que fait le movelast.
Mais, attention... tu ne peux faire de "MOVEment" qu'à la condition qu'il y ait "quelque chose" dans le recordset. C'est ce que teste le rst.EOF En l'absence de ce test, tu obtiendrais une erreur sur un rst vide.
Le rst.MoveFirst n'est là que pour te repositionner sur le début et pouvoir faire suivre une éventuelle recherche ou autre.
Comme le disait Bruno, tu aurais pu faire un DCount("*","Requête") mais, j'ai voulu corriger et rester dans ta méthode.
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------
Salut,
mais quelle est la raison ? Pourquoi le .Nb seul ne fonctionne t il pas ?
Si tu ouvre un recordset de cette facon, tu te retrouve (de façon imagée) sur le pas de la porte ;-)
Il faut donc "traverser" le recordset avant de pouvoir compter, ce que fait le movelast.
Mais, attention... tu ne peux faire de "MOVEment" qu'à la condition
qu'il y ait "quelque chose" dans le recordset. C'est ce que teste le rst.EOF
En l'absence de ce test, tu obtiendrais une erreur sur un rst vide.
Le rst.MoveFirst n'est là que pour te repositionner sur le début
et pouvoir faire suivre une éventuelle recherche ou autre.
Comme le disait Bruno, tu aurais pu faire un DCount("*","Requête")
mais, j'ai voulu corriger et rester dans ta méthode.
--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
mais quelle est la raison ? Pourquoi le .Nb seul ne fonctionne t il pas ?
Si tu ouvre un recordset de cette facon, tu te retrouve (de façon imagée) sur le pas de la porte ;-)
Il faut donc "traverser" le recordset avant de pouvoir compter, ce que fait le movelast.
Mais, attention... tu ne peux faire de "MOVEment" qu'à la condition qu'il y ait "quelque chose" dans le recordset. C'est ce que teste le rst.EOF En l'absence de ce test, tu obtiendrais une erreur sur un rst vide.
Le rst.MoveFirst n'est là que pour te repositionner sur le début et pouvoir faire suivre une éventuelle recherche ou autre.
Comme le disait Bruno, tu aurais pu faire un DCount("*","Requête") mais, j'ai voulu corriger et rester dans ta méthode.
-- A+ Pierre (3stone) Access MVP ------------------------------------------------------- Bien démarrer ? c'est ici http://users.skynet.be/mpfa/ ( Je ne réponds pas aux emails qui concernent Access ) -------------------------------------------------------