IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Erreur 3021 BOF/EOF sur un recordset.MoveNext


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 67
    Points : 45
    Points
    45
    Par défaut Erreur 3021 BOF/EOF sur un recordset.MoveNext
    Bonjour a tous, je souhaite afficher, dans un MsgBox, le contenu d'une table grace a recordset.
    Dans Access, je vois bien qu'elle est correctement remplie mais je tombe sur une erreur d'execution 3021 :
    BOF ou EOF est egal à true ou
    l'enregistrement actuel a été supprimé. L'opération demandé necessite un
    enregistrement actuel.

    Voici le code :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    1.Private Sub Form_Current()
    2.
    3.Dim strConnect, strConnect2 As String
    4.Dim strsql As String
    5.Dim dbCPTA As adodb.Connection
    6.Dim dbCPTA2 As adodb.Connection
    7.
    8.'declaration des recordsets
    9.Dim rst As New adodb.Recordset
    10.Dim rst2 As New adodb.Recordset
    11.
    12.'ouverture + connection au DSN "MyDSN"
    13.strConnect = "DSN=MyDSN"
    14.Set dbCPTA = New adodb.Connection
    15.dbCPTA.Open strConnect
    16.
    17.'ouverture + connection à la BDD
    18.Set dbCPTA2 = New adodb.Connection
    19.strConnect2 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Demo\toto.accdb;"
    20.dbCPTA2.Open strConnect2
    21.
    22.'reset de la table T_TEST
    23.DoCmd.SetWarnings False
    24.DoCmd.RunSQL "DELETE * FROM T_TEST"
    25.DoCmd.SetWarnings True
    26.
    27.'récupération des champs necessaires dans le recordset
    28.rst.Open "SELECT F_ARTICLE.AR_REF As n_ref ,F_ARTICLE.AR_DESIGN As n_design FROM F_ARTICLE", dbCPTA, adOpenDynamic, adLockOptimistic
    29.
    30.'boucle d'insertion des valeurs du recordset dans la table vide T_TEST
    31.While Not (rst.EOF)
    32.    strsql = "INSERT INTO T_TEST (REF,DESIGN) VALUES ('" & rst(0) & "', '" & rst(1) & "')"
    33.    dbCPTA2.Execute (strsql)
    34.    rst.MoveNext
    35.Wend
    36.
    37.'récupération des champs de T_TEST dans un autre recordset
    38.rst2.Open "SELECT T_TEST.REF,T_TEST.DESIGN FROM T_TEST", dbCPTA2, adOpenDynamic, adLockOptimistic
    39.
    40.'boucle d'affichage et de test de la table T_TEST
    41.While Not (rst2.EOF)
    42.    MsgBox "REF : " & rst2(0) & " DESIGN :" & rst2(1) & "."
    43.  rst.MoveNext 
    44.Wend
    45.
    46.'fermeture du recordset
    47.rst.Close
    48.'fermeture de la connexion au DSN
    49.dbCPTA.Close
    50.'suppression de l'objet dbCPTA
    51.Set dbCPTA = Nothing
    52.
    53.'fermeture du recordset
    54.rst2.Close
    55.'fermeture de la connexion à la BDD
    56.dbCPTA2.Close
    57.'suppression de l'objet dbCPTA2
    58.Set dbCPTA2 = Nothing
    59.
    60.
    61.MsgBox "fin"
    62.
    63.End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    salut,
    tu boucles sur ton rst2, donc il faut remplacer
    par
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Simple, rapide, clair concis et exact ... Merci beaucoup, c'est vraiment une erreur stupide ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Erreur 3021 : BOF ou EOF = True sur un recordset
    Par syntax_error dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/02/2011, 16h27
  2. erreur d'execution 3061 sur recordset
    Par moicats dans le forum VBA Access
    Réponses: 6
    Dernier message: 16/09/2008, 16h38
  3. Réponses: 1
    Dernier message: 17/07/2008, 22h07
  4. Erreur 3021 sur un RecordSet
    Par Herman dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/06/2008, 17h01
  5. [VBA] requête, recordset et erreur 3021
    Par bugprog dans le forum VBA Access
    Réponses: 10
    Dernier message: 27/04/2007, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo