OVH Cloud OVH Cloud

Index / DAO

4 réponses
Avatar
chew.baka
Bonjour à tous !

Je cherche à récupérer les noms des index d'une table. Ca donne ceci
sous DAO :

For Each TabEnCours In dBaseDeDonnées.TableDefs
If TabEnCours.name = Table Then 'remplit un tableau
avec le nom des index
ReDim TableauIndex(TabEnCours.Indexes.Count - 1)
TailleTableauIndex = TabEnCours.Indexes.Count - 2
a = 0
For Each idx In TabEnCours.Indexes
TableauIndex(a).Champs = idx.Fields
TableauIndex(a).Type = idx.Unique
a = a + 1
Next idx
Exit For
End If
Next TabEnCours

J'aimerais faire la même chose en ADO, mais je ne trouve rien sur la
gestion des index dans l'aide. Quelqu'un aurait-il une idée ?
Merci d'avance, et bonnes fêtes de fin d'année !

Via :)

4 réponses

Avatar
Sunny
Avec sql serveur tu peux regarder dans la table système sysindexes avec
tbname=[NOM_DE_TABLE]

"Via" a écrit dans le message de news:

Bonjour à tous !

Je cherche à récupérer les noms des index d'une table. Ca donne ceci
sous DAO :

For Each TabEnCours In dBaseDeDonnées.TableDefs
If TabEnCours.name = Table Then 'remplit un tableau
avec le nom des index
ReDim TableauIndex(TabEnCours.Indexes.Count - 1)
TailleTableauIndex = TabEnCours.Indexes.Count - 2
a = 0
For Each idx In TabEnCours.Indexes
TableauIndex(a).Champs = idx.Fields
TableauIndex(a).Type = idx.Unique
a = a + 1
Next idx
Exit For
End If
Next TabEnCours

J'aimerais faire la même chose en ADO, mais je ne trouve rien sur la
gestion des index dans l'aide. Quelqu'un aurait-il une idée ?
Merci d'avance, et bonnes fêtes de fin d'année !

Via :)


Avatar
Via
Merci Sunny (marrant j'ai une amie que l'on surnomme comme ça...)
Simplement il n'y a pas de champ tbname dans la table sysindexes, il n'y a
qu'un champ name et c'est le nom de l'index, ce qui ne m'arrange pas
vraiment en fait... Un autre moyen que je n'aurais pas vu ?
Merci d'avance,

Via :)

"Sunny" a écrit dans le message de
news:3fec76c9$0$17133$
Avec sql serveur tu peux regarder dans la table système sysindexes avec
tbname=[NOM_DE_TABLE]

"Via" a écrit dans le message de news:

> Bonjour à tous !
>
> Je cherche à récupérer les noms des index d'une table. Ca donne ceci
> sous DAO :
>
> For Each TabEnCours In dBaseDeDonnées.TableDefs
> If TabEnCours.name = Table Then 'remplit un tableau
> avec le nom des index
> ReDim TableauIndex(TabEnCours.Indexes.Count - 1)
> TailleTableauIndex = TabEnCours.Indexes.Count - 2
> a = 0
> For Each idx In TabEnCours.Indexes
> TableauIndex(a).Champs = idx.Fields
> TableauIndex(a).Type = idx.Unique
> a = a + 1
> Next idx
> Exit For
> End If
> Next TabEnCours
>
> J'aimerais faire la même chose en ADO, mais je ne trouve rien sur la
> gestion des index dans l'aide. Quelqu'un aurait-il une idée ?
> Merci d'avance, et bonnes fêtes de fin d'année !
>
> Via :)




Avatar
Via
Au moins un début de réponse :
select * from sysindexes where id=object_id('Adresse')
Merci Yan :)

Via :)

"Via" a écrit dans le message de
news:
Merci Sunny (marrant j'ai une amie que l'on surnomme comme ça...)
Simplement il n'y a pas de champ tbname dans la table sysindexes, il n'y


a
qu'un champ name et c'est le nom de l'index, ce qui ne m'arrange pas
vraiment en fait... Un autre moyen que je n'aurais pas vu ?
Merci d'avance,

Via :)

"Sunny" a écrit dans le message de
news:3fec76c9$0$17133$
> Avec sql serveur tu peux regarder dans la table système sysindexes avec
> tbname=[NOM_DE_TABLE]
>
> "Via" a écrit dans le message de news:
>
> > Bonjour à tous !
> >
> > Je cherche à récupérer les noms des index d'une table. Ca donne ceci
> > sous DAO :
> >
> > For Each TabEnCours In dBaseDeDonnées.TableDefs
> > If TabEnCours.name = Table Then 'remplit un tableau
> > avec le nom des index
> > ReDim TableauIndex(TabEnCours.Indexes.Count - 1)
> > TailleTableauIndex = TabEnCours.Indexes.Count - 2
> > a = 0
> > For Each idx In TabEnCours.Indexes
> > TableauIndex(a).Champs = idx.Fields
> > TableauIndex(a).Type = idx.Unique
> > a = a + 1
> > Next idx
> > Exit For
> > End If
> > Next TabEnCours
> >
> > J'aimerais faire la même chose en ADO, mais je ne trouve rien sur la
> > gestion des index dans l'aide. Quelqu'un aurait-il une idée ?
> > Merci d'avance, et bonnes fêtes de fin d'année !
> >
> > Via :)
>
>




Avatar
Via
Un autre plus sympathique : la procédure stockée sp_helpindex <nom table>
Voici comment j'essaie de l'utiliser :

Cmd.ActiveConnection = Connection_SQL_Server
Cmd.CommandText = "sp_helpindex" & Table
Cmd.CommandType = adCmdStoredProc

Set RsTableADO = Cmd.Execute

Au débogage, j'ai une erreur : -2147217900 (80040e14) [Microsoft][ODBS SQL
Server Driver][SQL Server] Impossible de trouver la procédure stockée
'sp_helpindex TabPFTests'.
Hors quand j'écris la même commande dans une vue, ça ne pose aucun
problème.
Où est mon erreur ?
Merci d'avance,

Via :)


"Via" a écrit dans le message de
news:
Au moins un début de réponse :
select * from sysindexes where id=object_id('Adresse')
Merci Yan :)

Via :)

"Via" a écrit dans le message de
news:
> Merci Sunny (marrant j'ai une amie que l'on surnomme comme ça...)
> Simplement il n'y a pas de champ tbname dans la table sysindexes, il


n'y
a
> qu'un champ name et c'est le nom de l'index, ce qui ne m'arrange pas
> vraiment en fait... Un autre moyen que je n'aurais pas vu ?
> Merci d'avance,
>
> Via :)
>
> "Sunny" a écrit dans le message de
> news:3fec76c9$0$17133$
> > Avec sql serveur tu peux regarder dans la table système sysindexes


avec
> > tbname=[NOM_DE_TABLE]
> >
> > "Via" a écrit dans le message de news:
> >
> > > Bonjour à tous !
> > >
> > > Je cherche à récupérer les noms des index d'une table. Ca donne


ceci
> > > sous DAO :
> > >
> > > For Each TabEnCours In dBaseDeDonnées.TableDefs
> > > If TabEnCours.name = Table Then 'remplit un tableau
> > > avec le nom des index
> > > ReDim TableauIndex(TabEnCours.Indexes.Count - 1)
> > > TailleTableauIndex = TabEnCours.Indexes.Count - 2
> > > a = 0
> > > For Each idx In TabEnCours.Indexes
> > > TableauIndex(a).Champs = idx.Fields
> > > TableauIndex(a).Type = idx.Unique
> > > a = a + 1
> > > Next idx
> > > Exit For
> > > End If
> > > Next TabEnCours
> > >
> > > J'aimerais faire la même chose en ADO, mais je ne trouve rien sur


la
> > > gestion des index dans l'aide. Quelqu'un aurait-il une idée ?
> > > Merci d'avance, et bonnes fêtes de fin d'année !
> > >
> > > Via :)
> >
> >
>
>