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,

    Mon bouton de commande MODIFIER montrez le code de ce bouton svp
    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,
        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

          Excusez mon ignorance, je n'ai pas bien saisi votre remarque
          1. Bonjour,

            RS.Close


            Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic


            et

            If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
            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. Re,

                sur quelle ligne il y a l'erreur ???????????????????????????????????????
                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. 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