Erreur '3704'

Bonjour les Amis

Je viens vers vous pour vous demander de l'aide. Je travaille sur une application en VB6

Ma BD est placée en Access 2007
la liaison se fait par ADO

Sur mon Module , j'ai fais

Public BD as New ADODB.Connection

Public RS as New ADODB.Recordset

Public Rss as New ADODB.Recordset

Quant je presse Mon bouton de commande MODIFIER

le VB me renvoie le Message 'Erreur 3704'

Cette opération n'est pas autorisée si l'objet est fermé

J'ai beau cherché, mais sans resultat.

Merci de m'orienter vers la solution. Vraiment je me suis trouvé bloqué

9 réponses

  1. Bonjour,

    Le probleme vient bien de ce que je vous ai ecrit Lien #3 et Lien #5

    RS et Rss

    vous lisez un recordset ferme RS alors que vous avez cree un recordset Rss lisez attentivement votre code
    1. Re

      Une fois le message renvoyé, la couleur jaune se place sur

      .... RS![Campagne]=lblcampagne

      si j'annule cette ligne, la couleur jaune se place sur

      ......RS![Societe]=lblSociete

      et ainsi de suite

      Merci quant même pour votre attention
      1. Re,

        sur quelle ligne il y a l'erreur ???????????????????????????????????????
        1. Bonjour l'Ami,

          Voilà ce que j'ai essayé :

          Pour enlever le RS.Close , J'ai déplacé la première condition vers

          TQuantite ( évenement : LostFocus )

          Private Sub TQuantite_LostFocus()

          Dim VarCuQtePdt As Double

          SQLs = "select * from TableReceptionFermes where (Campagne='" & CStr(lblCampagne) & "' and Societe='" & CStr(lblSociete) & "' and CodePdtR=" & CDbl(TCodePdt) & " and Fournisseur='" & CStr(TFournisseur) & "' and Magasin='" & CStr(TNMagasin) & "')"

          If RS.State = adStateOpen Then RS.Close
          RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

          If RS![CumulQtePdtReceptionFerme] <> 0 Then
          RS.MoveLast
          VarCuQtePdt = RS![CumulQtePdtReceptionFerme]
          Else
          VarCuQtePdt = 0
          End If

          If VarCuQtePdt < TQuantite Then
          MsgBox "Désolé, la Quantité est supérieure à celle Réceptionnée par ce Magasin et Achetée à ce Fournisseur !", vbCritical + vbMsgBoxRight, "Votre attention !"
          TQuantite.SetFocus
          Exit Sub
          End If

          end sub


          '------------------------------------------------------

          Private sub CmdModifier_Click()

          If NOrdre = TNOrdre Then

          GoTo Continue:

          End If

          SQLs = "select * from TableTours where (Campagne='" & CStr(lblCampagne) & "' and Societe='" & CStr(lblSociete) & "')"

          If Rss.State = adStateOpen Then Rss.Close
          Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic

          Continue:

          ModifMsg = MsgBox("Êtes vous sûr de vouloir modifier ces données ?", vbQuestion + vbMsgBoxRight + vbYesNo, "Alors quoi ?")

          If ModifMsg = vbYes Then

          If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
          If Not lblSociete = "" Then RS![Societe] = lblSociete
          If Not TNOrdre = "" Then RS![NOrdre] = TNOrdre
          If Not TBonRetour = "" Then RS![BonRetour] = TBonRetour
          If Not TDate = "" Then RS![Date] = TDate
          If Not TTypePdt = "" Then RS![TypePdt] = TTypePdt
          If Not TCodePdt = "" Then RS![CodePdt] = TCodePdt
          If Not TProduit = "" Then RS![Produit] = TProduit
          If Not TQuantite = "" Then RS![Quantite] = TQuantite
          If Not TUnite = "" Then RS![Unite] = TUnite
          If Not TPrix = "" Then RS![Prix] = TPrix
          If Not TMontant = "" Then RS![Montant] = TMontant
          If Not TNMagasin = "" Then RS![MagasinRetour] = TNMagasin
          If Not TLieu = "" Then RS![Lieu] = TLieu
          If Not TCodeFou = "" Then RS![CodeFou] = TCodeFou
          If Not TFournisseur = "" Then RS![Fournisseur] = TFournisseur

          RS.Update

          end Sub


          Mais le même problème persiste encore

          Sincèrement, je me suis trouvé bloqué, vraiment BLOQUE au bout du couloir
          1. Bonjour,

            RS.Close


            Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic


            et

            If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
            1. Bonjour l'Ami

              Excusez mon ignorance, je n'ai pas bien saisi votre remarque
              1. Bonjour,
                Tout a fait normale cette erreur, vous essayez de lire un recordset RS que vous avez ferme au lieu de lire celui que vous venez d'ouvrir Rss
                1. Bonjour l'Ami,

                  Suite à votre requête, mon code est comme suite :

                  Private Sub cmdModifier_Click()

                  Dim VarCuQtePdt As Double

                  SQLs = "select * from TableReceptionFermes where (Campagne='" & CStr(lblCampagne) & "' and Societe='" & CStr(lblSociete) & "' and CodePdtR=" & CDbl(TCodePdt) & " and Fournisseur='" & CStr(TFournisseur) & "' and Magasin='" & CStr(TNMagasin) & "')"

                  If RS.State = adStateOpen Then RS.Close
                  RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

                  If RS![CumulQtePdtReceptionFerme] <> 0 Then
                  RS.MoveLast
                  VarCuQtePdt = RS![CumulQtePdtReceptionFerme]
                  Else
                  VarCuQtePdt = 0
                  End If

                  If VarCuQtePdt < TQuantite Then
                  MsgBox "Désolé, la Quantité est supérieure à celle Réceptionnée par ce Magasin et Achetée à ce Fournisseur !", vbCritical + vbMsgBoxRight, "Votre attention !"
                  TQuantite.SetFocus
                  Exit Sub
                  End If

                  RS.Close

                  '-------------------------------------------------

                  If NOrdre = TNOrdre Then

                  GoTo Continue:

                  End If

                  SQLs = "select * from TableTours where (Campagne='" & CStr(lblCampagne) & "' and Societe='" & CStr(lblSociete) & "')"

                  If Rss.State = adStateOpen Then Rss.Close
                  Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic

                  Continue:

                  ModifMsg = MsgBox("Êtes vous sûr de vouloir modifier ces données ?", vbQuestion + vbMsgBoxRight + vbYesNo, "Alors quoi ?")

                  If ModifMsg = vbYes Then

                  If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
                  If Not lblSociete = "" Then RS![Societe] = lblSociete
                  If Not TNOrdre = "" Then RS![NOrdre] = TNOrdre
                  If Not TBonRetour = "" Then RS![BonRetour] = TBonRetour
                  If Not TDate = "" Then RS![Date] = TDate
                  If Not TTypePdt = "" Then RS![TypePdt] = TTypePdt
                  If Not TCodePdt = "" Then RS![CodePdt] = TCodePdt
                  If Not TProduit = "" Then RS![Produit] = TProduit
                  If Not TQuantite = "" Then RS![Quantite] = TQuantite
                  If Not TUnite = "" Then RS![Unite] = TUnite
                  If Not TPrix = "" Then RS![Prix] = TPrix
                  If Not TMontant = "" Then RS![Montant] = TMontant
                  If Not TNMagasin = "" Then RS![MagasinRetour] = TNMagasin
                  If Not TLieu = "" Then RS![Lieu] = TLieu
                  If Not TCodeFou = "" Then RS![CodeFou] = TCodeFou
                  If Not TFournisseur = "" Then RS![Fournisseur] = TFournisseur

                  RS.Update
                  RS.Close



                  A plus
                  1. Bonjour,

                    Mon bouton de commande MODIFIER montrez le code de ce bouton svp