Erreur 3021 l'ors de la connexion à une base de donnée

Bonjours,

J'ai une erreur "3021 BOF ou EOF es égal à true ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel" qui se produit lorsque je lance une requet en VBA.

Alors que dans ma table il y a des enregistrement lorsque je lance directement la requet dans acces.

'--------------------------------'
'Declaration des Variable de BDDD'
'--------------------------------'
Dim conn As ADODB.Connection
Dim RecSet As ADODB.recordset
Dim SQL As String
Dim LesResult As Variant
Dim i As Long

'=========Instansiation des objets========='
Set RecSet = New ADODB.recordset
Set conn = New ADODB.Connection
'=========================================='

'===========Connection à la base==========='
conn.ConnectionString = ThisWorkbook.leControler.strConnectString
conn.Open
'=========================================='

Select Case HerbierAdmin.ActiveAction 'recupération de l'action active

    Case "PM": 'Si l'on ajoute un Plan de Montage
        Dim obj As Object
        Me.TitreLabel = "Ajouter Un PM"
        Me.ListLabel = "Selectioner un PM"
        'on cache la page de création d'un nouveau PM
        Me.Multiplat.Pages.Item(1).Visible = False

    '====REQUETE====='
        SQL = "SELECT SAP_ClassItems.[Plan de montage] "
        SQL = SQL & "FROM SAP_ClassItems "
        SQL = SQL & "WHERE (((SAP_ClassItems.[Plan de montage]) Like ""PM 21S *""));"
        '================='
        Debug.Print SQL

        LesResult = RecSet.GetRows() 'L'erreur se produis ici
        RecSet.Close

        For i = 0 To UBound(LesResult, 2)
           Me.ListeBox.AddItem (LesResult(0, i))
        Next

Je comprend pas pourquoi sa me fait sa d'autant plus que lorsque je mes une autre requete l'erreur ne se fait pas.

Up ?

bonjour,

Tu n'envoies pas ta requête SQL vers ta DB etdonc la réponse est toujours vide.

En effet dans cette version du code je l'avais retirer.

Cependant j'envoie bien ma requet avec cette instruction.

RecSet.Open SQL, conn, adOpenForwardOnly, adLockReadOnly, adCmdText

La et c'est toujours sur get row que j'ai mon erreur. Et son code et bien 3021

bonjour,

si tu as mis ces instructions,

conn.ConnectionString = ThisWorkbook.leControler.strConnectString
conn.Open

l'envoi de la requête devrait se faire ainsi

set Recset=conn.execute(SQL)

Bonjours,

Je vient de tester, mais sa ne fonctionne toujours, pas j'obtient encore l'erreur 3021 sur

LesResult = RecSet.GetRows()

Le plus bizard dans tous sa c'est que lorsque je fait une autre requet qui n'est pas sur une table lier et bas sa marche...

bonjour

salut h2so4

on requête avec le menu Données/Obtenir ou Récupérer

bien plus facile, fiable et efficace

amitiés à vous

Oui mais moi je souhaite directement utiliser le résultat de la requête dans mon userform pas l'avoir dans une feuille de mon tableur excel

Rechercher des sujets similaires à "erreur 3021 ors connexion base donnee"