Erreur '3704'

Fermé
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 - 12 nov. 2014 à 22:34
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 17 nov. 2014 à 10:02
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

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
13 nov. 2014 à 11:42
Bonjour,

Mon bouton de commande MODIFIER montrez le code de ce bouton svp
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
14 nov. 2014 à 23:34
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 15/11/2014 à 18:04
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
15 nov. 2014 à 20:05
Bonjour l'Ami

Excusez mon ignorance, je n'ai pas bien saisi votre remarque
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
16 nov. 2014 à 11:02
Bonjour,

RS.Close



Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic


et

If Not lblCampagne = "" Then RS![Campagne] = lblCampagne
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
Modifié par mohalesage le 16/11/2014 à 13:21
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
16 nov. 2014 à 15:59
Re,

sur quelle ligne il y a l'erreur ???????????????????????????????????????
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
17 nov. 2014 à 02:14
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
17 nov. 2014 à 10:02
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