OVH Cloud OVH Cloud

sql le retour (encore plus fun)

8 réponses
Avatar
seb-seb
j'ai essayé divers truc et donc (avec un peu de pas à pas)
j'ouvre mon recordset avec select * from table
recordcount = 1
rs.movenext et la par magie recordcount = 14
c'est nimp ...
mais le principale c'est que ca marche

8 réponses

Avatar
Quasimodo
seb-seb pretended :
j'ai essayé divers truc et donc (avec un peu de pas à pas)
j'ouvre mon recordset avec select * from table
recordcount = 1
rs.movenext et la par magie recordcount = 14
c'est nimp ...
mais le principale c'est que ca marche



Bonjour,
Voila la réponse à votre question :
http://www.microsoft.com/france/msdn/support/technopoches/default.asp
Il faut identifier le type de recordset par defaut, je ne me souvient
plus en dao mais je sais qu'il faut faire un movelast - movefirst pour
pouvoir connaitre le nombre de records, mais ils sont tous accessible
au départ sans faire de déplacement.

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Pascal B.
Bonjour,

Attention:
Qaund ouvre un Recordset de type DYNASET, la propriété RecordCount ne retourne PAS le nombre de recordset.
Il faut faire d'abord MOVELAST.

Exemple (en DAO):
Set RS = DB.OpenRecordet("Select * From Table") '(Ouvre un Dynaset par défaut)
RS.MoveLast
If Not RS.EOF Then
MsgBox "Nombre d'enregistrements: " & RS.RecordCount
Else
MsgBox "Il n'ya pas d'enregistrement !"
End If

Par contre, quand on ouvre un Recordset de type TABLE, on a bien directement le nombre d'enregistrements.

Exemple:
Set RS = DB.OpenRecordset("Table", dbOpenTable)
MsgBox "Nombre d'enregistrements: " & RS.RecordCount

Cordialement
Pascal B.

"seb-seb" wrote in message news:%
| j'ai essayé divers truc et donc (avec un peu de pas à pas)
| j'ouvre mon recordset avec select * from table
| recordcount = 1
| rs.movenext et la par magie recordcount = 14
| c'est nimp ...
| mais le principale c'est que ca marche
|
|
Avatar
YannX
Merci pour cette information ; j'avais ce "bug" sans comprendre le pourquoi
!
Question : y a-t-il en core bcp d'autres petits pièges de programmation en
DAO ?
( Je debute -tout seul- avec cet outil.... Pourtant Access était tres bien
!?)

Merci de votre reponse

"Pascal B." a écrit dans le message de
news:
Bonjour,

Attention:
Qaund ouvre un Recordset de type DYNASET, la propriété RecordCount ne


retourne PAS le nombre de recordset.
Il faut faire d'abord MOVELAST.

Exemple (en DAO):
Set RS = DB.OpenRecordet("Select * From Table") '(Ouvre un Dynaset par


défaut)
RS.MoveLast
If Not RS.EOF Then
MsgBox "Nombre d'enregistrements: " & RS.RecordCount
Else
MsgBox "Il n'ya pas d'enregistrement !"
End If

Par contre, quand on ouvre un Recordset de type TABLE, on a bien


directement le nombre d'enregistrements.

Exemple:
Set RS = DB.OpenRecordset("Table", dbOpenTable)
MsgBox "Nombre d'enregistrements: " & RS.RecordCount

Cordialement
Pascal B.

"seb-seb" wrote in message


news:%
| j'ai essayé divers truc et donc (avec un peu de pas à pas)
| j'ouvre mon recordset avec select * from table
| recordcount = 1
| rs.movenext et la par magie recordcount = 14
| c'est nimp ...
| mais le principale c'est que ca marche
|
|




Avatar
seb-seb
merci

"Pascal B." a écrit dans le message de news:
Bonjour,

Attention:
Qaund ouvre un Recordset de type DYNASET, la propriété RecordCount ne retourne PAS le nombre de recordset.
Il faut faire d'abord MOVELAST.

Exemple (en DAO):
Set RS = DB.OpenRecordet("Select * From Table") '(Ouvre un Dynaset par défaut)
RS.MoveLast
If Not RS.EOF Then
MsgBox "Nombre d'enregistrements: " & RS.RecordCount
Else
MsgBox "Il n'ya pas d'enregistrement !"
End If

Par contre, quand on ouvre un Recordset de type TABLE, on a bien directement le nombre d'enregistrements.

Exemple:
Set RS = DB.OpenRecordset("Table", dbOpenTable)
MsgBox "Nombre d'enregistrements: " & RS.RecordCount

Cordialement
Pascal B.

"seb-seb" wrote in message news:%
| j'ai essayé divers truc et donc (avec un peu de pas à pas)
| j'ouvre mon recordset avec select * from table
| recordcount = 1
| rs.movenext et la par magie recordcount = 14
| c'est nimp ...
| mais le principale c'est que ca marche
|
|




Avatar
Quasimodo
YannX has brought this to us :
Merci pour cette information ; j'avais ce "bug" sans comprendre le pourquoi
!
Question : y a-t-il en core bcp d'autres petits pièges de programmation en
DAO ?
( Je debute -tout seul- avec cet outil.... Pourtant Access était tres bien
!?)

Merci de votre reponse

"Pascal B." a écrit dans le message de
news:
Bonjour,

Attention:
Qaund ouvre un Recordset de type DYNASET, la propriété RecordCount ne
retourne PAS le nombre de recordset. Il faut faire d'abord MOVELAST.

Exemple (en DAO):
Set RS = DB.OpenRecordet("Select * From Table") '(Ouvre un Dynaset par
défaut) RS.MoveLast
If Not RS.EOF Then
MsgBox "Nombre d'enregistrements: " & RS.RecordCount
Else
MsgBox "Il n'ya pas d'enregistrement !"
End If

Par contre, quand on ouvre un Recordset de type TABLE, on a bien directement
le nombre d'enregistrements.

Exemple:
Set RS = DB.OpenRecordset("Table", dbOpenTable)
MsgBox "Nombre d'enregistrements: " & RS.RecordCount

Cordialement
Pascal B.

"seb-seb" wrote in message
news:%
j'ai essayé divers truc et donc (avec un peu de pas à pas)
j'ouvre mon recordset avec select * from table
recordcount = 1
rs.movenext et la par magie recordcount = 14
c'est nimp ...
mais le principale c'est que ca marche







Bonjour,
Sans prôner Microsoft, de grâce, avant de dire à tout bout de champs
que les problèmes que vous rencontrer dans les outils que vous manier
peux ou prou sont des bugs, lisez et vérifier attentivement la doc des
outils que vous utisez. Cf: le problème que vous venez de rencontrer.
Et non, de prime abord la programmation avec le DAO n'apporte pas des
pièges, oui des difficultés vous allez en rencontrer comme tous les
developpers de ce forum. Je vous conseillez, de n'utiliser que l'ADO,
le DAO est amené à disparaitre si pas, il reste beaucoup moins puissant
de par ces foncionnalités, ses options, l'ensemble des drivers d'accès
aux db, ...

@+Quaz

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
christophe-pasde
Oui pour tout,
un petit bémol si c'est une utilisation uniquement access DAO c'est très
bien, même plus performant, si c'est pour d'autres formats ADO impératif.

Christophe

Quasimodo a écrit :

YannX has brought this to us :

Merci pour cette information ; j'avais ce "bug" sans comprendre le
pourquoi
!
Question : y a-t-il en core bcp d'autres petits pièges de
programmation en
DAO ?
( Je debute -tout seul- avec cet outil.... Pourtant Access était tres
bien
!?)

Merci de votre reponse

"Pascal B." a écrit dans le message de
news:

Bonjour,

Attention:
Qaund ouvre un Recordset de type DYNASET, la propriété RecordCount ne
retourne PAS le nombre de recordset. Il faut faire d'abord MOVELAST.

Exemple (en DAO):
Set RS = DB.OpenRecordet("Select * From Table") '(Ouvre un Dynaset
par défaut) RS.MoveLast
If Not RS.EOF Then
MsgBox "Nombre d'enregistrements: " & RS.RecordCount
Else
MsgBox "Il n'ya pas d'enregistrement !"
End If

Par contre, quand on ouvre un Recordset de type TABLE, on a bien
directement le nombre d'enregistrements.

Exemple:
Set RS = DB.OpenRecordset("Table", dbOpenTable)
MsgBox "Nombre d'enregistrements: " & RS.RecordCount

Cordialement
Pascal B.

"seb-seb" wrote in message
news:%

j'ai essayé divers truc et donc (avec un peu de pas à pas)
j'ouvre mon recordset avec select * from table
recordcount = 1
rs.movenext et la par magie recordcount = 14
c'est nimp ...
mais le principale c'est que ca marche








Bonjour,
Sans prôner Microsoft, de grâce, avant de dire à tout bout de champs que
les problèmes que vous rencontrer dans les outils que vous manier peux
ou prou sont des bugs, lisez et vérifier attentivement la doc des outils
que vous utisez. Cf: le problème que vous venez de rencontrer.
Et non, de prime abord la programmation avec le DAO n'apporte pas des
pièges, oui des difficultés vous allez en rencontrer comme tous les
developpers de ce forum. Je vous conseillez, de n'utiliser que l'ADO, le
DAO est amené à disparaitre si pas, il reste beaucoup moins puissant de
par ces foncionnalités, ses options, l'ensemble des drivers d'accès aux
db, ...

@+Quaz

@+Quaz



Avatar
Gloops
Salut,

Il y a deux manières de savoir le nombre d'enregistrements d'une table
(et c'est sous Access que j'ai expérimenté ça).

Set Rs = OpenRecordset("SELECT *, NbEnr As Count(*) FROM tabNomTable")

Première version :

Function NbEnr(Rs As Recordset)
NbEnr = Rs!NbEnr
End Function

Deuxième version :

Function NbEnr(Rs As Recordset)
Rs.MoveLast
Rs.MoveFirst
NbEnr = Rs.Recordcount
End Function

Je ne me rappelle plus exactement, il me semble que dans certaines
circonstances il y a des petites nuances entre les deux. Hormis le fait
que la première impose d'une part de maîtriser quels champs existent
dans la requête, d'autre part que la table ne comporte pas de champ
nommé NbEnr.

Je suis parti du principe que le nombre d'enregistrements se consulte en
début de traitement, sinon la deuxième version ci-dessus doit être
affinée pour repositionner le pointeur sur l'enregistrement précédemment
sélectionné. Cela étant placer le nombre dans une variable en début de
traitement est de loin le plus simple, à moins d'ajouter des
enregistrements en cours de route (auquel cas il ne faudra pas oublier
Rs.Requery).

______________________________________
seb-seb a écrit, le 18/10/2004 15:09 :

j'ai essayé divers truc et donc (avec un peu de pas à pas)
j'ouvre mon recordset avec select * from table
recordcount = 1
rs.movenext et la par magie recordcount = 14
c'est nimp ...
mais le principale c'est que ca marche




Avatar
Driss HANIB
exactement ..

Driss
"Quasimodo" a écrit dans le message de
news:
seb-seb pretended :
> j'ai essayé divers truc et donc (avec un peu de pas à pas)
> j'ouvre mon recordset avec select * from table
> recordcount = 1
> rs.movenext et la par magie recordcount = 14
> c'est nimp ...
> mais le principale c'est que ca marche

Bonjour,
Voila la réponse à votre question :
http://www.microsoft.com/france/msdn/support/technopoches/default.asp
Il faut identifier le type de recordset par defaut, je ne me souvient
plus en dao mais je sais qu'il faut faire un movelast - movefirst pour
pouvoir connaitre le nombre de records, mais ils sont tous accessible
au départ sans faire de déplacement.

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com