Vb Erreur '3667'

Bonjour,

Je fait actuellement un programme sous excel en vb.
Je doit grâce a une IHM appeler différentes requêtes.

La première passe bien j'ai mon résultat, des fois la 2eme...
Mais a un moment j'ai toujours cette erreur qui s'affiche :

"Erreur d'execution '3667'"
"Une opération différente empêche l'exécution de cette opération"

Si je clique sur debogage

La ligne :
If rstCoupeT.RecordCount <> 0 Then 'si rst pieces n'est pas vide'
pose probleme

a savoir que :
Set rstCoupeT = conPubs.OpenRecordset(req, dbOpenSnapshot, dbRunAsync).

Merci de m'avoir lu et de m'apporter une réponse
Configuration: Windows XP
Firefox 3.0.12

6 réponses

  1. Cette erreure est générée par un accés impossible à une même ressource.

    Je te conseille de vérifier 3 choses :
    Est-ce que tu utilises bien tes connexions (1 seul requete par connexion) ?
    Est-ce que tu refermes bien toutes tes connexions (il faut les fermer après chaque ouverture (après traitment bien sûr :p))?
    Est-ce que ta source de données est stable ou libre ?

    Pour tes futures erreures (pas trop, j'espere pour toi ^^), je te conseille de te référencé à ça :
    http://officesystemaccess.seneque.net/vba/codesdao.htm

    c'est la liste des erreures qui peuvent être retournées par DAO.

    Bonne continuation.

    Cdt
    0
    1. Merci pour cette réponse rapide et pour la liste des erreur.
      Pour Tes 3 question je croi avoir fait le necessaire
      Voici l'exemple d'une de mes fonction, dit moi si j'ai bien fait les chose , car je debute et je suis trés tete en l'air :S

      Public Function RequeteCoupeT()

      Dim wrkODBC As Workspace
      Dim conPubs As Connection
      Dim rstCoupeT As Recordset

      Set wrkODBC = CreateWorkspace("", "admin", "", dbUseODBC)

      Set conPubs = wrkODBC.OpenConnection("ma connection", , True, _
      "ODBC;DSN=insql;UID=wwuser;PWD=wwuser;DATABASE=Runtime")
      conPubs.QueryTimeout = 180

      '''''''''''''''''''''''''''''requete''''''''''''''''''''
      req=""""
      ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

      Set rstCoupeT = conPubs.OpenRecordset(req, dbOpenSnapshot, dbRunAsync)

      If rstCoupeT.RecordCount <> 0 Then 'si rst pieces n'est pas vide'

      Do While Not rstCoupeT.EOF 'tant qu'on ets pas a la fin de la chaine'

      mes test bla bla

      loop
      End If

      conPubs.Close
      wrkODBC.Close

      End Function
      0
      1. ça fait pas mal de temps que je n'ai pas pratiqué le vba sous excel mais il me semble qu'il faut que tu vides l'objet recordset. De cette façon :
        rstCoupeT=nothing
        


        Dans ta partie :
        Do While Not rstCoupeT.EOF 'tant qu'on ets pas a la fin de la chaine' 
        
        mes test bla bla 
        
        loop 
        
        


        tu ne fais pas de requêtes supplémentaires ?
        0
        1. rstCoupeT=nothing
          ne marche pas, enfin me produit une erreur, mais j'ai compris l'idée je vais essayer d'y faire.
          Mais je ne peut pas vider mon rstCoupeT en plein test car dés que je le vide dans ma boucle , je ne peut pas continuer

          Sinon je fait plein de requête supplémentaire, mais j'en commence une dés que j'ai fini et fermer l'autre
          0
          1. C'est une fois ta boucle terminée qu'il faut vider ton rs.
            Et si tu as des requêtes SQL dans ta boucle, il faut que tu instancies une nouvelle connexion (n'oublie pas de changer le nom des variables :p)
            0
            1. Cela viendrais du petite perte de connexion, j'ai continuer avec la fonction goto error et après je peu accéder a ma requête ,puis je peut plus.

              Je ne sait pas pourquoi je perd ma connexion comme sa pourtant avant chaque requête je l'ouvre et juste aprés je la ferme....
              0