Access ADO : Seek Method

Résolu
jemby Messages postés 11 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 5 janvier 2007 - 27 août 2006 à 12:07
jemby Messages postés 11 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 5 janvier 2007 - 29 août 2006 à 11:53
Bonjour,

J'ai jusqu'à aujourd'hui programmé en VBA sous la référence DAO. Je maitrise bien l'ensemble des possibilités mais je souhaite désormais passer à ADOcar j'ai peur que DAO ne soit plus supporté dans les prochaines versions office de Microsoft.
J'ai donc entamé un programme dans lequel il me faudrait utiliser l'equivalent de la methode Seek en DAO.

Voici le code que j'utilise en ADO :

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset


Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset


'Set the connection properties and open the connection.
With conn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "C:\A_DATA_WAREHOUSE\SAP_Ticket_Prg\BackEnd_SAP_Ticket_Prg.mdb"
    .Open
End With
   
With rst


    rst.Index = "SUJET"
    'Set the location of the cursor service.
    .CursorLocation = adUseServer
    'Open the recordset.
    .Open "Tb_Facts_Temp_Inbox_IT_Coord", conn, adOpenKeyset, _
      adLockOptimistic, adCmdTableDirect
    .Seek nouvsujet, adSeekFirstEQ
   
End With


Rank1 = rst![Rank] 'je souhaite recupérer la valeur de ce champs dans le recordset detecté par la methode Seek

rst.Close
conn.Close

Mon soucis : Dans le cadre d'une boucle dans laquelle j'utilise Seek plusieurs fois, cette methode fonctionne uniquement pour la premiere recherche, et dès le deuxieme passage dans ma boucle, il apparait le message suivant :

"Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record"

Je ne comprend pas car ce record existe. Cela pourrait il être lié à un problème de positionnement du curseur ?

Merci pour votre aide

Jemby
A voir également:

6 réponses

jemby Messages postés 11 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 5 janvier 2007
29 août 2006 à 11:53
Merci à tous, Mon problème est réglè.


Jemby
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 août 2006 à 16:35
Bonjour,
Fais un MoveFirst après chaque recherche.
Je n' ai aucune idée comment est écrite ta boucle.
A toi de voir ou tu dois le placer.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 août 2006 à 16:54
Tu dois aussi définir ton CursorType à adOpenDynamic.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
28 août 2006 à 23:18
Et tant qu'à faire, utiliser
.CursorLocation = adUseClient

qui est plus rapide et ne cause pas de problème avec RecordCount

MPi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
29 août 2006 à 01:43
Bonsoir MPi,
En plus avec CursorLocation = adUseClient
je crois que c' est pas la peine de rajouter
MoveNext dans la boucle , non ?
C' est juste pour savoir.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
29 août 2006 à 01:46
Pardon.
je voulais dire MoveFirst
0
Rejoignez-nous