OVH Cloud OVH Cloud

Count ne fonctione pas

7 réponses
Avatar
Christian.L
Bonjour à tous

Alors que ma base de données "Base" contient 2 tables et plus de 150
enregistrements,
les 2 lignes de programmation suivantes me donnent Nombre=0

Base.Recordsets.Refresh
Nombre = Base.Recordsets.Count

Que se passe t'il ?

Merci d'avance

C.L.

7 réponses

Avatar
Christian.L
Re Bonjour

En complément, il semble que le programme en entier considère la base comme
vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.


"Christian.L" a écrit dans le message de news:

Bonjour à tous

Alors que ma base de données "Base" contient 2 tables et plus de 150
enregistrements,
les 2 lignes de programmation suivantes me donnent Nombre=0

Base.Recordsets.Refresh
Nombre = Base.Recordsets.Count

Que se passe t'il ?

Merci d'avance

C.L.



Avatar
Raymond [mvp]
Bonjour.

essaie :
MsgBox DCount("*", "Base")

Evite d'appeler une table du nom "base", pour tout mélanger c'est parfait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de news:

Re Bonjour

En complément, il semble que le programme en entier considère la base
comme vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.



Avatar
Christian.L
Bonjour Raymond et merci pour la réponse

J'ai compris l'erreur, pour moi "Base" est la base de données et non une des
tables de celle ci.
Ma "Base" comprend 2 tables "Recapitulation" et "Fichiers"

Quand je fais : MsgBox DCount("*", "Base"), cela ne marche pas
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192, nombre
d'enregistrement de la table.

Mais alors, comment accède t'on a chaque table de la base ? Je n'ai pas
trouver d'objet "Table" ?

Merci

C.L.







"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

essaie :
MsgBox DCount("*", "Base")

Evite d'appeler une table du nom "base", pour tout mélanger c'est parfait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news:
Re Bonjour

En complément, il semble que le programme en entier considère la base
comme vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.








Avatar
Christian.L
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192, nombre
d'enregistrement de la table.
Pardon

Je voulais dire :
Si je fais : MsgBox DCount("*", "Recapitulation"), cela marche, résultat
192, nombre d'enregistrement de la table.

Christian


"Christian.L" a écrit dans le message de
news:
Bonjour Raymond et merci pour la réponse

J'ai compris l'erreur, pour moi "Base" est la base de données et non une
des tables de celle ci.
Ma "Base" comprend 2 tables "Recapitulation" et "Fichiers"

Quand je fais : MsgBox DCount("*", "Base"), cela ne marche pas
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192, nombre
d'enregistrement de la table.

Mais alors, comment accède t'on a chaque table de la base ? Je n'ai pas
trouver d'objet "Table" ?

Merci

C.L.







"Raymond [mvp]" a écrit dans le message
de news: %
Bonjour.

essaie :
MsgBox DCount("*", "Base")

Evite d'appeler une table du nom "base", pour tout mélanger c'est
parfait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news:
Re Bonjour

En complément, il semble que le programme en entier considère la base
comme vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.











Avatar
Raymond [mvp]
Bonjour.

fais comme ceci:
Dim Obj As AccessObject
For Each Obj In CurrentData.AllTables
If Left(Obj.Name, 4) <> "Msys" Then
MsgBox Obj.Name & " = " & DCount("*", Obj.Name) & " Enregistrements"
End If
Next Obj


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news: %
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192,
nombre d'enregistrement de la table.
Pardon

Je voulais dire :
Si je fais : MsgBox DCount("*", "Recapitulation"), cela marche, résultat
192, nombre d'enregistrement de la table.

Christian


"Christian.L" a écrit dans le message de
news:
Bonjour Raymond et merci pour la réponse

J'ai compris l'erreur, pour moi "Base" est la base de données et non une
des tables de celle ci.
Ma "Base" comprend 2 tables "Recapitulation" et "Fichiers"

Quand je fais : MsgBox DCount("*", "Base"), cela ne marche pas
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192,
nombre d'enregistrement de la table.

Mais alors, comment accède t'on a chaque table de la base ? Je n'ai pas
trouver d'objet "Table" ?

Merci

C.L.







"Raymond [mvp]" a écrit dans le message
de news: %
Bonjour.

essaie :
MsgBox DCount("*", "Base")

Evite d'appeler une table du nom "base", pour tout mélanger c'est
parfait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news:
Re Bonjour

En complément, il semble que le programme en entier considère la base
comme vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.














Avatar
Christian.L
Merci Raymond pour la réponse

Mais le besoin, c'est l'accès aux champs des enregistrements d'une table
pour lecture et modification éventuelle.

J'ai réussi à créé des enregistrements et a les remplir avec :
Set Enregistrement = Base.OpenRecordset("Recapitulation")
With Enregistrement
.AddNew
.Fields("Niveau").Value = NomDessin
.Fields("Nom du bloc ou entité").Value = "Ligne"
.Fields("Calque").Value = LigneRef.Layer
.Fields("Longueur-du-bloc-ou-entité").Value = LigneRef.Length
.Fields("Circuit").Value = LigneRef.Linetype
.Update
.Bookmark = .LastModified
End With

Le problème est maintenant d'accéder au champs "Circuit" de tous les
enregistrements par exemple pour lecture/modification

Merci encore de ton aide

Christian



"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

fais comme ceci:
Dim Obj As AccessObject
For Each Obj In CurrentData.AllTables
If Left(Obj.Name, 4) <> "Msys" Then
MsgBox Obj.Name & " = " & DCount("*", Obj.Name) & "
Enregistrements"
End If
Next Obj


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news: %
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192,
nombre d'enregistrement de la table.
Pardon

Je voulais dire :
Si je fais : MsgBox DCount("*", "Recapitulation"), cela marche, résultat
192, nombre d'enregistrement de la table.

Christian


"Christian.L" a écrit dans le message de
news:
Bonjour Raymond et merci pour la réponse

J'ai compris l'erreur, pour moi "Base" est la base de données et non une
des tables de celle ci.
Ma "Base" comprend 2 tables "Recapitulation" et "Fichiers"

Quand je fais : MsgBox DCount("*", "Base"), cela ne marche pas
Si je fais : MsgBox DCount("*", "Base"), cela marche, résultat 192,
nombre d'enregistrement de la table.

Mais alors, comment accède t'on a chaque table de la base ? Je n'ai pas
trouver d'objet "Table" ?

Merci

C.L.







"Raymond [mvp]" a écrit dans le
message de news: %
Bonjour.

essaie :
MsgBox DCount("*", "Base")

Evite d'appeler une table du nom "base", pour tout mélanger c'est
parfait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news:
Re Bonjour

En complément, il semble que le programme en entier considère la base
comme vide.
En effet plus loin un :

With Base
For Each Enregistrement In .Recordsets

Next
End With

ne passe qu'une seule fois

C.L.


















Avatar
Raymond [mvp]
Mais le besoin, c'est l'accès aux champs des enregistrements d'une table
pour lecture et modification éventuelle.
Si à chaque message tu changes de question , ça va durer.

je t'ai répondu chaque fois à la question demandée. tu aurais mieux fait
d'exposer ton besoin plutôt que de partir sur un comptage d'enregistrement
qui ne te sert à rien dans la modification des enregistrements.
pour accéder à tous les enregistrements pour lecture/modification tu fais
une requête de modification.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Christian.L" a écrit dans le message de
news:
Merci Raymond pour la réponse

Mais le besoin, c'est l'accès aux champs des enregistrements d'une table
pour lecture et modification éventuelle.

J'ai réussi à créé des enregistrements et a les remplir avec :
Set Enregistrement = Base.OpenRecordset("Recapitulation")
With Enregistrement
.AddNew
.Fields("Niveau").Value = NomDessin
.Fields("Nom du bloc ou entité").Value = "Ligne"
.Fields("Calque").Value = LigneRef.Layer
.Fields("Longueur-du-bloc-ou-entité").Value = LigneRef.Length
.Fields("Circuit").Value = LigneRef.Linetype
.Update
.Bookmark = .LastModified
End With

Le problème est maintenant d'accéder au champs "Circuit" de tous les
enregistrements par exemple pour lecture/modification

Merci encore de ton aide

Christian