OVH Cloud OVH Cloud

Liste des tables

3 réponses
Avatar
Daniel AUBRY
Bonjour à tous,

je souhaite lister les tables d'une base Access 2000
et compter les enregistrements.
Ce que j'ai fait marche bien SAUF si il y a des requetes dans la base.
Comment peut-on isoler les tables ?

Merci de vos idées et conseils.

Le code :

Set cat.ActiveConnection = Connect

For Each X In cat.Tables
If Mid(X.Type, 1, 3) <> "SYS" And Mid(X.Type, 1, 3) <> "ACC" Then
SQL = "Select * from [" & X.Name & "]"
Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
If Not Rs.BOF And Not Rs.EOF Then
Rs.MoveLast
NombreEnregistrement = Rs.RecordCount
Else
NombreEnregistrement = 0
End If
Rs.Close

Set mItem = ListeDesTables.ListItems.Add(, , X.Name)
mItem.SubItems(1) = NombreEnregistrement
End If
Next




Daniel AUBRY

mail@daniel-aubry.com
www.daniel-aubry.com

3 réponses

Avatar
Sebho
salut

pour les tables je n'ai pas regardé, mais pour compter les enregistrements,
à mon avis il sera bcp + performant de faire

SQL = "Select COUNT(*) as Nb from [" & X.Name & "]"
Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
NombreEnregistrement =Rs("Nb")


sebho



"Daniel AUBRY" a écrit dans le message de
news:3f034a6c$0$4596$
Bonjour à tous,

je souhaite lister les tables d'une base Access 2000
et compter les enregistrements.
Ce que j'ai fait marche bien SAUF si il y a des requetes dans la base.
Comment peut-on isoler les tables ?

Merci de vos idées et conseils.

Le code :

Set cat.ActiveConnection = Connect

For Each X In cat.Tables
If Mid(X.Type, 1, 3) <> "SYS" And Mid(X.Type, 1, 3) <> "ACC" Then
SQL = "Select * from [" & X.Name & "]"
Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
If Not Rs.BOF And Not Rs.EOF Then
Rs.MoveLast
NombreEnregistrement = Rs.RecordCount
Else
NombreEnregistrement = 0
End If
Rs.Close

Set mItem = ListeDesTables.ListItems.Add(, , X.Name)
mItem.SubItems(1) = NombreEnregistrement
End If
Next




Daniel AUBRY


www.daniel-aubry.com




Avatar
Fly
Salut,

pour ce qui concerne les tables :
en utilisant DAO (ADO je ne maitrise pas bien)

set bds = DAO.opendatabase("ma_base_de_donnée")
msgbox DAO.tabledefs.count

ouala!

--
-----------------------------
Fly.(Francois)
MVP Access

C'est quand tout le monde fait des efforts que les choses s'arrangent :
http://users.skynet.be/mpfa/charte.htm

Sebho a écrit dans le message :

salut

pour les tables je n'ai pas regardé, mais pour compter les


enregistrements,
à mon avis il sera bcp + performant de faire

SQL = "Select COUNT(*) as Nb from [" & X.Name & "]"
Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
NombreEnregistrement =Rs("Nb")


sebho



"Daniel AUBRY" a écrit dans le message de
news:3f034a6c$0$4596$
> Bonjour à tous,
>
> je souhaite lister les tables d'une base Access 2000
> et compter les enregistrements.
> Ce que j'ai fait marche bien SAUF si il y a des requetes dans la base.
> Comment peut-on isoler les tables ?
>
> Merci de vos idées et conseils.
>
> Le code :
>
> Set cat.ActiveConnection = Connect
>
> For Each X In cat.Tables
> If Mid(X.Type, 1, 3) <> "SYS" And Mid(X.Type, 1, 3) <> "ACC" Then
> SQL = "Select * from [" & X.Name & "]"
> Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
> If Not Rs.BOF And Not Rs.EOF Then
> Rs.MoveLast
> NombreEnregistrement = Rs.RecordCount
> Else
> NombreEnregistrement = 0
> End If
> Rs.Close
>
> Set mItem = ListeDesTables.ListItems.Add(, , X.Name)
> mItem.SubItems(1) = NombreEnregistrement
> End If
> Next
>
>
>
>
> Daniel AUBRY
>
>
> www.daniel-aubry.com
>
>




Avatar
Fly
Salut,


Je crois que j'ai sans doute du mal m'exprimer:
le fait d'utiliser les collection tabledefs, querydefs et forms permet à lui
seul de faire de faire la différence entre table, requête, et formulaires.

Ainsi, comme chacune de ces collections comporte la propriété count, tu peux
obtenir le nombre de chaque type d'élément.

Bonne journée


--
-----------------------------
Fly.(Francois)
MVP Access

C'est quand tout le monde fait des efforts que les choses s'arrangent.

Daniel AUBRY a écrit dans le message :
3f0483c9$0$13191$
Ok les gars,
en ce qui concerne le SQl ça marche. Plus perfo ? Je ne vois pas de
différence.
Par contre j'ai tojours mon blème.

Quand on liste des éléments d'une base de données,
comment peut on faire la différence entre table, requete et formulaire ?

Si d'autre ont une petite idée.............

Merci d'avance

Daniel

www.daniel-aubry.com
"Daniel AUBRY" a écrit dans le message de news:
3f034a6c$0$4596$
> Bonjour à tous,
>
> je souhaite lister les tables d'une base Access 2000
> et compter les enregistrements.
> Ce que j'ai fait marche bien SAUF si il y a des requetes dans la base.
> Comment peut-on isoler les tables ?
>
> Merci de vos idées et conseils.
>
> Le code :
>
> Set cat.ActiveConnection = Connect
>
> For Each X In cat.Tables
> If Mid(X.Type, 1, 3) <> "SYS" And Mid(X.Type, 1, 3) <> "ACC" Then
> SQL = "Select * from [" & X.Name & "]"
> Rs.Open SQL, Connect, adOpenKeyset, adLockReadOnly
> If Not Rs.BOF And Not Rs.EOF Then
> Rs.MoveLast
> NombreEnregistrement = Rs.RecordCount
> Else
> NombreEnregistrement = 0
> End If
> Rs.Close
>
> Set mItem = ListeDesTables.ListItems.Add(, , X.Name)
> mItem.SubItems(1) = NombreEnregistrement
> End If
> Next
>
>
>
>
> Daniel AUBRY
>
>
> www.daniel-aubry.com
>
>