Index avec ADO

Résolu
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013 - 12 déc. 2006 à 22:12
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013 - 14 déc. 2006 à 22:47
Bonsoir à tous !
Je dois faire une impotante modification dans un de mes programmes en VB6, et je me suis dit, tant qu'à faire, autant le convertir également en ADO (il utilise actuellement DAO).
Mais ça coince !!
Je parviens à créer parfaitement mes index, mais lorsque je veux les utiliser, j'ai le message suivant :



Erreur d'exécution 3251
Le fournisseur actuel ne prend pas en charge l'interface nécessaire pour la fonctionnalité d'index.



Sub ADOSeek()
   Dim cnn As New ADODB.Connection
   Dim rst As New ADODB.Recordset
   ' Open the connection
   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & App.Path & "\New.mdb;"
   ' Open the recordset
   with rst
     'Open the recordset
     .Open "Countries", cnn, adOpenKeyset, adLockReadOnly, _
                             adCmdTableDirect      
     'Select the index used to order the data in the recordset
     .Index = "ISO3166_3Index"         '<<<  c'est ici que ça coince       
     'Find the order
     .Seek "BEL", adSeekFirstEQ       
     'If a match is found print the quantity of the order
     If Not .EOF Then
       Debug.Print .Fields("fr").Value
     End If
   end with 
   ' Close the recordset
   rst.Close
End Sub


Si quelqu'un pouvait me dire pourquoi ?
Merci d'avance

4 réponses

JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
14 déc. 2006 à 22:47
Bonsoir, à tous,
Je crois avoir trouvé la solution.
Il doit s'agir d'un problème de compatibilité entre ADO et DAO.
Les tables ont été créées à l'époque avec DAO 3.51.
Lorsque je veux passer à ADO, il crée parfaitement les index (qui sont d'ailleurs toujours compatibles avec Access 97), mais la méthode .index provoque l'erreur 3251.
Ce qui me fait penser à un problème de compatibilité, c'est que si je recrée la même table, cette fois avec ADO (que ce soit 3.51 ou 4.0, j'ai essayé les deux), je n'ai plus l'erreur. D'ailleurs, le message d'erreur dit bien "le fournisseur actuel..." cad Access97.
Si quelqu'un pouvait me confirmer la chose, ce serait sympa.
Quoi qu'il en soit, mon problème est résolu ! (ou plutôt, il ne l'est pas, puisque je ne passerai pas à ADO)
Merci quand même
Jessica
3
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
13 déc. 2006 à 22:45
Je crois que vous devez ouvrir un objet Recordset de type table pour la methode seek
Open "Countries", cnn
,dbOpenTable
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
13 déc. 2006 à 23:39
Bonsoir,

"dbOpenTable" ne figure pas parmi les types de curseurs de la méthode Open en ADO. Seuls sont disponibles adOpenDynamic, adOpenForwardOnly, adOpenKeyset et adOpenStatic.
Merci quand même d'avoir essayé
0
bricoyeye Messages postés 326 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 avril 2008 2
14 déc. 2006 à 00:04
J'ai eu un probléme de ce genre il y a quelque temps, j'avais pris un exemple sur MSDN.
PS: dbOpenTable marche en ADO.
0
Rejoignez-nous