Access ADO : Seek Method [Résolu]

Signaler
Messages postés
11
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
5 janvier 2007
-
Messages postés
11
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
5 janvier 2007
-
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

6 réponses

Messages postés
11
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
5 janvier 2007

Merci à tous, Mon problème est réglè.


Jemby
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Tu dois aussi définir ton CursorType à adOpenDynamic.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Et tant qu'à faire, utiliser
.CursorLocation = adUseClient

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

MPi
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Pardon.
je voulais dire MoveFirst