Access ADO : Seek Method [Résolu]

Messages postés
11
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
5 janvier 2007
- - Dernière réponse : jemby
Messages postés
11
Date d'inscription
lundi 31 juillet 2006
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
5 janvier 2007
3
Merci
Merci à tous, Mon problème est réglè.


Jemby

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jemby
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Dernière intervention
20 novembre 2007
0
Merci
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.
Commenter la réponse de chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Dernière intervention
20 novembre 2007
0
Merci
Tu dois aussi définir ton CursorType à adOpenDynamic.
Commenter la réponse de chaibat05
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Et tant qu'à faire, utiliser
.CursorLocation = adUseClient

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

MPi
Commenter la réponse de cs_MPi
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Dernière intervention
20 novembre 2007
0
Merci
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.
Commenter la réponse de chaibat05
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Dernière intervention
20 novembre 2007
0
Merci
Pardon.
je voulais dire MoveFirst
Commenter la réponse de chaibat05

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.