Access ADO : Seek Method [Résolu]

jemby 11 Messages postés lundi 31 juillet 2006Date d'inscription 5 janvier 2007 Dernière intervention - 27 août 2006 à 12:07 - Dernière réponse : jemby 11 Messages postés lundi 31 juillet 2006Date d'inscription 5 janvier 2007 Dernière intervention
- 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

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


Jemby
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jemby
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 28 août 2006 à 16:35
0
Utile
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
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 28 août 2006 à 16:54
0
Utile
Tu dois aussi définir ton CursorType à adOpenDynamic.
Commenter la réponse de chaibat05
cs_MPi 3868 Messages postés mardi 19 mars 2002Date d'inscription 24 mai 2018 Dernière intervention - 28 août 2006 à 23:18
0
Utile
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
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 29 août 2006 à 01:43
0
Utile
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
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 29 août 2006 à 01:46
0
Utile
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.