Bonjour,

Je rencontre un problème de chargement d'un recordset à partir d'une requête Access (2003 SP2).

Voici mon code (basique ...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
' Déclaration connexion
Dim CONX As New ADODB.Connection
Set CONX = CurrentProject.Connection
 
' Déclaration recorset
Dim RecordsetConfig As New ADODB.Recordset
RecordsetConfig.ActiveConnection = CONX
 
' Chargement du recordset avec une requête Access : TPEexportConfig
Dim SQL As String
SQL = "select * from TPEexportConfig"
RecordsetConfig.Open SQL, CONX, adOpenDynamic
RecordsetConfig.MoveFirst
 
Do Until RecordsetConfig.EOF = True
           ' insertion en base pour chaque enregistrement
            DoCmd.RunSQL "INSERT INTO ConfigTPE (NumTPE,IdEltConf,Version) VALUES (" & RecordsetConfig.Fields(0) & ", 1 ,'" & RecordsetConfig.Fields(1) & "');", True
 
           RecordsetConfig.MoveNext
Loop
     RecordsetConfig.Close
Mais je bloque à la ligne MoveFirst avec l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
erreur d'exécution '3021'
BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé
Et si je ne mets pas mon RecordsetConfig.MoveFirst je ne rentre pas dans la boucle.
Ce qui m'étonne c'est qu'en passant via DAO je n'avais pas ce pb.

En revanche si ma variable SQL s'appuie sur une table Access (et non plus une requête Access), je rentre dans ma boucle (bon après j'ai de gros pb de perfs dont je parlerai après ...)

Quelqu'un voit-il mon erreur ?

D'avance merci de l'aide de quiconque pour le grand débutant VBA que je suis.