Losrque j'utilise le requête suivante manuellement :
"SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as
Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
le résultat me montre 2 (deux) records...
Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount
indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un
record !!!
Merci pour votre aide.
Ici mon exemple de code :
Dim IndexCat, CatNr, SubCatNr As Integer
Dim CatDesc, SubCatDesc, MyStr As String
Dim dbs As Database
Dim qdfTemp As QueryDef
Dim rst As Recordset
Dim MyCat(2, 500)
Dim MySubCat(3, 500)
Set dbs = CurrentDb()
MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc
as Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
Set qdfTemp = dbs.CreateQueryDef("", MyStr)
Set rst = qdfTemp.OpenRecordset
IndexCat = rst.RecordCount
'ReDim MyCat(3, IndexCat + 1)
CatNr = 0
With rst
' Enumerate records.
.MoveFirst
Do While CatNr < IndexCat
MyCat(0, CatNr) = !Category
MyCat(1, CatNr) = !Description
Debug.Print "Rec : " & CatNr & " Cat <" & MyCat(0, CatNr) & ">
<" & MyCat(1, CatNr) & ">"
CatNr = CatNr + 1
Loop
.Close
End With
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
Sylvain Lafontaine
Je n'ai pas essayé votre code mais c'est bien souvent une mauvaide idée que d'utiliser .RecordCount car dans plusieurs cas, selon le type de recordset, la valeur de RecordCount sera fausse; comme par exemple elle sera égale à -1 ou à 1 au lieu de la valeur désirée.
Ajouter un .MoveLast avec un .MoveFirst ou mieux encore, tester la fin du recordset avec .EOF:
Do While Not rst.EOF ... rst.MoveNext Loop
Aussi, dans votre code, vous avez oublié de mettre un .MoveNext dans votre boucle.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: sylvain aei ca (fill the blanks, no spam please)
"Dan" wrote in message news:
Bonjour toud,
Losrque j'utilise le requête suivante manuellement : "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as Description FROM Categories WHERE (((Categories.CategoryType)='M'));" le résultat me montre 2 (deux) records... Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un record !!!
Merci pour votre aide.
Ici mon exemple de code : Dim IndexCat, CatNr, SubCatNr As Integer Dim CatDesc, SubCatDesc, MyStr As String
Dim dbs As Database Dim qdfTemp As QueryDef Dim rst As Recordset Dim MyCat(2, 500) Dim MySubCat(3, 500)
Set dbs = CurrentDb()
MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
Set qdfTemp = dbs.CreateQueryDef("", MyStr)
Set rst = qdfTemp.OpenRecordset
IndexCat = rst.RecordCount
'ReDim MyCat(3, IndexCat + 1)
CatNr = 0
With rst ' Enumerate records. .MoveFirst Do While CatNr < IndexCat MyCat(0, CatNr) = !Category MyCat(1, CatNr) = !Description Debug.Print "Rec : " & CatNr & " Cat <" & MyCat(0, CatNr) & "> <" & MyCat(1, CatNr) & ">" CatNr = CatNr + 1 Loop .Close End With
dbs.Close
Je n'ai pas essayé votre code mais c'est bien souvent une mauvaide idée que
d'utiliser .RecordCount car dans plusieurs cas, selon le type de recordset,
la valeur de RecordCount sera fausse; comme par exemple elle sera égale à -1
ou à 1 au lieu de la valeur désirée.
Ajouter un .MoveLast avec un .MoveFirst ou mieux encore, tester la fin du
recordset avec .EOF:
Do While Not rst.EOF
...
rst.MoveNext
Loop
Aussi, dans votre code, vous avez oublié de mettre un .MoveNext dans votre
boucle.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)
"Dan" <Dan@discussions.microsoft.com> wrote in message
news:160EED04-10F8-456C-B66C-8B48F596E673@microsoft.com...
Bonjour toud,
Losrque j'utilise le requête suivante manuellement :
"SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as
Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
le résultat me montre 2 (deux) records...
Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount
indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un
record !!!
Merci pour votre aide.
Ici mon exemple de code :
Dim IndexCat, CatNr, SubCatNr As Integer
Dim CatDesc, SubCatDesc, MyStr As String
Dim dbs As Database
Dim qdfTemp As QueryDef
Dim rst As Recordset
Dim MyCat(2, 500)
Dim MySubCat(3, 500)
Set dbs = CurrentDb()
MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc
as Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
Set qdfTemp = dbs.CreateQueryDef("", MyStr)
Set rst = qdfTemp.OpenRecordset
IndexCat = rst.RecordCount
'ReDim MyCat(3, IndexCat + 1)
CatNr = 0
With rst
' Enumerate records.
.MoveFirst
Do While CatNr < IndexCat
MyCat(0, CatNr) = !Category
MyCat(1, CatNr) = !Description
Debug.Print "Rec : " & CatNr & " Cat <" & MyCat(0, CatNr) & ">
<" & MyCat(1, CatNr) & ">"
CatNr = CatNr + 1
Loop
.Close
End With
Je n'ai pas essayé votre code mais c'est bien souvent une mauvaide idée que d'utiliser .RecordCount car dans plusieurs cas, selon le type de recordset, la valeur de RecordCount sera fausse; comme par exemple elle sera égale à -1 ou à 1 au lieu de la valeur désirée.
Ajouter un .MoveLast avec un .MoveFirst ou mieux encore, tester la fin du recordset avec .EOF:
Do While Not rst.EOF ... rst.MoveNext Loop
Aussi, dans votre code, vous avez oublié de mettre un .MoveNext dans votre boucle.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC E-mail: sylvain aei ca (fill the blanks, no spam please)
"Dan" wrote in message news:
Bonjour toud,
Losrque j'utilise le requête suivante manuellement : "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as Description FROM Categories WHERE (((Categories.CategoryType)='M'));" le résultat me montre 2 (deux) records... Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un record !!!
Merci pour votre aide.
Ici mon exemple de code : Dim IndexCat, CatNr, SubCatNr As Integer Dim CatDesc, SubCatDesc, MyStr As String
Dim dbs As Database Dim qdfTemp As QueryDef Dim rst As Recordset Dim MyCat(2, 500) Dim MySubCat(3, 500)
Set dbs = CurrentDb()
MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
Set qdfTemp = dbs.CreateQueryDef("", MyStr)
Set rst = qdfTemp.OpenRecordset
IndexCat = rst.RecordCount
'ReDim MyCat(3, IndexCat + 1)
CatNr = 0
With rst ' Enumerate records. .MoveFirst Do While CatNr < IndexCat MyCat(0, CatNr) = !Category MyCat(1, CatNr) = !Description Debug.Print "Rec : " & CatNr & " Cat <" & MyCat(0, CatNr) & "> <" & MyCat(1, CatNr) & ">" CatNr = CatNr + 1 Loop .Close End With
dbs.Close
3stone
Salut,
"Dan" | Losrque j'utilise le requête suivante manuellement : | "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as | Description FROM Categories WHERE (((Categories.CategoryType)='M'));" | le résultat me montre 2 (deux) records... | Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount | indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un | record !!! | | Merci pour votre aide. | | Ici mon exemple de code : | Dim IndexCat, CatNr, SubCatNr As Integer | Dim CatDesc, SubCatDesc, MyStr As String | | Dim dbs As Database | Dim qdfTemp As QueryDef | Dim rst As Recordset | Dim MyCat(2, 500) | Dim MySubCat(3, 500) | | Set dbs = CurrentDb() | | MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc | as Description FROM Categories WHERE (((Categories.CategoryType)='M'));" | | Set qdfTemp = dbs.CreateQueryDef("", MyStr) | | Set rst = qdfTemp.OpenRecordset |
ici, il faut commencer par vérifier si le recordset est peuplé...
If Not rst.EOF Then
'// Parcourir le recordset rst.MoveLast
'// Conter les records IndexCat = rst.RecordCount
'// Revenir au début pour la suite... rst.Move.First
"Dan"
| Losrque j'utilise le requête suivante manuellement :
| "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as
| Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
| le résultat me montre 2 (deux) records...
| Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount
| indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un
| record !!!
|
| Merci pour votre aide.
|
| Ici mon exemple de code :
| Dim IndexCat, CatNr, SubCatNr As Integer
| Dim CatDesc, SubCatDesc, MyStr As String
|
| Dim dbs As Database
| Dim qdfTemp As QueryDef
| Dim rst As Recordset
| Dim MyCat(2, 500)
| Dim MySubCat(3, 500)
|
| Set dbs = CurrentDb()
|
| MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc
| as Description FROM Categories WHERE (((Categories.CategoryType)='M'));"
|
| Set qdfTemp = dbs.CreateQueryDef("", MyStr)
|
| Set rst = qdfTemp.OpenRecordset
|
ici, il faut commencer par vérifier si le recordset est peuplé...
If Not rst.EOF Then
'// Parcourir le recordset
rst.MoveLast
'// Conter les records
IndexCat = rst.RecordCount
'// Revenir au début pour la suite...
rst.Move.First
"Dan" | Losrque j'utilise le requête suivante manuellement : | "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc as | Description FROM Categories WHERE (((Categories.CategoryType)='M'));" | le résultat me montre 2 (deux) records... | Mais si j'utilise le même avec un OPenrecordset, la valeur .RecordCount | indique 1 !! Avec un espion, le recordset ne contient effectivement qu'un | record !!! | | Merci pour votre aide. | | Ici mon exemple de code : | Dim IndexCat, CatNr, SubCatNr As Integer | Dim CatDesc, SubCatDesc, MyStr As String | | Dim dbs As Database | Dim qdfTemp As QueryDef | Dim rst As Recordset | Dim MyCat(2, 500) | Dim MySubCat(3, 500) | | Set dbs = CurrentDb() | | MyStr = "SELECT Categories.CategoryID AS Category, Categories.CategoryDesc | as Description FROM Categories WHERE (((Categories.CategoryType)='M'));" | | Set qdfTemp = dbs.CreateQueryDef("", MyStr) | | Set rst = qdfTemp.OpenRecordset |
ici, il faut commencer par vérifier si le recordset est peuplé...
If Not rst.EOF Then
'// Parcourir le recordset rst.MoveLast
'// Conter les records IndexCat = rst.RecordCount
'// Revenir au début pour la suite... rst.Move.First