Erreur '3704'

mohalesage Messages postés 162 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Mon bouton de commande MODIFIER montrez le code de ce bouton svp
    0
  2. mohalesage Messages postés 162 Statut Membre 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
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  4. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami

    Excusez mon ignorance, je n'ai pas bien saisi votre remarque
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    RS.Close


    Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic


    et

    If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
    0
  7. mohalesage Messages postés 162 Statut Membre 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
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    sur quelle ligne il y a l'erreur ???????????????????????????????????????
    0
  9. mohalesage Messages postés 162 Statut Membre 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
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0