INDEX Access non créé par clause SELECT ?

notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012 - 8 mars 2007 à 13:43
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012 - 8 mars 2007 à 17:49
Bonjour à tous,

J'ai le problème suivant : j'ai créé une base Access 2000 pour gérer mes fichiers MP3. La table des titres comporte un INDEX (idx_numrec) pointant sur le champ "numrec" (incrémentation automatique). Dans mon pgm VB j'ai défini :

Global db As DAO.Database
Global tb_sql As Recordset

Dans la partie de code concernée, je fais une recherche de genre musical (classique, variétés, R&B, folklore, etc). Pour cela, j'utilise le code suivant :

mdb = GetSetting(appname:="Sonothèque", section:="MDB Path",  Key:="path")
Set db = OpenDatabase(mdb)
....
Set tb_sql = db.OpenRecordset("SELECT * FROM titres_mp3 WHERE chemin LIKE '*" & path_selected & "*'")
....
tb_sql.Index = "idx_numrec"
tb_sql.Seek "=", valeur

Mais lorsque j'exécute le programme, j'ai un arrêt sur l'instruction tb_sql.Index = "idx_numrec"avec le message suivant :

Erreur d'exécution 3251 : Opération non autorisée pour ce type d'objet.

Je peux accéder à l'index avec la table de base (titres_mp3) mais pas à celle crée dynamiquement par la clause SQL SELECT.

Si tous les enregistrements sont bien générés, est-ce normal que l'Index ne le soit pas ?

Merci de votre aide à venir.

NOTPA01, aka Nono

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
8 mars 2007 à 14:19
Heu... tu peux me dire comment tu crée ton index ? Car là dans ton code, jamais tu crée d'index dans ta table !
0
notpa01 Messages postés 95 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 14 janvier 2012
8 mars 2007 à 17:49
L'index a été créé via MS-Access (tout comme la table d'ailleurs).

Pour reproduire le problème, c'est simple:

1 - Sous Access 2000, créer une base de données et une table (tb) avec qq champs (C1, C2, C3)
2 - Toujours sous Access, créer un index (appelons-le IDX) qui pointe sur le champ C1.
3 - Sous VB6,  définir les DIM ou GLOBAL pour db, tb et tb_sql et ouvrir la tb.MDB
4 - Coder :
    Set tb_sql = db.OpenRecordset("SELECT * FROM tb")
    tb_sql.Index = "IDX"
    tb_sql.Seek "=", valeur
5 - Exécuter le programme.
6 - On a le message d'erreur : l'index n'a pas été créé par la clause SELECT.

Voilà voilà.....

Notpa01
0
Rejoignez-nous