IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Operation is not allowed when the object is closed.


Sujet :

ASP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Operation is not allowed when the object is closed.
    Bonjour,

    j'ai une erreur que je ne comprend pas

    voici mon code
    sql="INSERT INTO prom_products ( prom_id_product, prom_date_debut,prom_date_fin, prom_price )VALUES ("&id_product&", '"&date_debut&" "& heure_debut&"', '"&date_fin&" "& heure_fin&"', "&prom_price&")"

    Set rs = dbc.Execute(sql)

    rs.close
    set rs=nothing
    si je ferme mon rs j'ai ce message d'erreur : Operation is not allowed when the object is closed.

    si je ne le ferme pas ca marche

    Ce que je ne comprend pas c'est pourquoi il me fait cette erreurs alors qu'il execute la requete et qu'après il n'as plus besoin de ce rs.

    (Dans le reste de mon code je ne l'utilise plus).

    Si vous pouvez m'expliquer...

    Merci et bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    apparemment ton resultset doit être encore utilisé quelque part..

    Peux-tu nous montrer l'entiereté du code stp.

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    QU'est-ce que "dbc"? La connexion est-elle ouverte?

    A+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    bonjour,

    non je suis sur à 100% qu'il est utilisé nulle part
    Voila la fin de mon code
    if Request.Form("control")<>"" then
    control_form
    if control="yes" then
    insere_nouvelle_promo
    response.write "control=yes"
    else
    response.write "<span id='message_erreur' name='message_erreur' style='visibility:visible; color:#FF0000;: align='center'>L'ajout du produit n'as pas pu se faire</span>"

    end if
    end if
    C'est dans la fonction insere_nouvelle_promo que l'insertion ce fait, après il n'y a plus rien.

    Immobilis--> oui la connection est ouverte, dbc est un objet

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    le code que tu montres là ne nous est d'aucune utilité.

    Montre plutôt le code de ta fonction qui lui en principe établi la connexion + l'insertion....

  6. #6
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    si je ne le ferme pas ca marche
    Ben laisse-le ouvert, et ça marchera ! CQFD

    Plus sérieusement : si te le laisse ouvert, et comme asp est pourvu d'un systeme de "garbage collector", cela n'aura aucune incidence.

    Set rs = dbc.Execute(sql)

    rs.close
    set rs=nothing
    Ce code n'est d'aucune utilité, pourquoi fermer un recordset juste après l'avoir ouvert ?

    Peux-tu nous montrer l'entiereté du code stp.
    Re ..

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par roro06 Voir le message
    Plus sérieusement : si te le laisse ouvert, et comme asp est pourvu d'un systeme de "garbage collector", cela n'aura aucune incidence.
    Y'a un ramasse miette en ASP3????
    Citation Envoyé par roro06 Voir le message
    Ce code n'est d'aucune utilité, pourquoi fermer un recordset juste après l'avoir ouvert ?
    Ben disons que la manière n'est pas la bonne. Ceci tant qu'à ouvrir un recordset autant le fermer et le detruire, justement parce qu'il n'y a pas de ramasse miette en ASP3.
    Si on utilise pas les données retournées par l'execution d'un requete ou si celle-ci ne retourne pas de données il vaut mieux utiliser un objet "connection" ou "command" pour ça:
    http://www.w3schools.com/ADO/met_comm_execute.asp
    http://www.w3schools.com/ADO/met_conn_execute.asp

    A+

  8. #8
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Y'a un ramasse miette en ASP3????
    ben, autant que je sache, oui. En tout cas, les objets sont détruits en fin d'exécution des scripts, et les recordset, connection et autres qui sont restés ouverts sont automatiquement fermés et détruits par IIS.
    Ceci dit je répète ce que j'ai toujours entendu et considéré comme acquis, je me trompe peut-être , mais si ce n'est pas le cas, j'ai quelques sites anciens qui auraient planté depuis longtemps ...

    Source : doc IIS : http://localhost/iishelp/iis/htm/asp/iiwaobu.htm
    l'objet est libéré lorsque le fichier .asp termine le traitement de la requête.
    tant qu'à ouvrir un recordset autant le fermer et le detruire
    On est d'accord, tout de même.

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par roro06 Voir le message
    En tout cas, les objets sont détruits en fin d'exécution des scripts, et les recordset, connection et autres qui sont restés ouverts sont automatiquement fermés et détruits par IIS.
    Ouh là, je parirai pas trop là-dessus... C'est pas ce qu'on appel les fuites de mémoire? Enfin... Ce que je veux dire c'est qu'il ne faut peut-être pas utiliser le terme ramasse-miette (garbage collector) qui est un composant du FrameWork.
    En ASP3 Les objets sont bien détruits quelque part, quelque part oui... Alors que le ramasse-miettes du framework .net est un gestionnaire sur lequel on a une certaine maîtrise.

    A+

  10. #10
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Oui, j'ai parlé de "système de garbage collector", le terme était peut-être inapproprié, mais le mécanisme existe néammoins dans ASP3

    'il ne faut peut-être pas utiliser le terme ramasse-miette (garbage collector) qui est un composant du FrameWork.


    Lisp, JAVA, PERL, et d'autres, sont également pourvus de GC, mécanisme beaucoup plus ancien que le framework dotnet .

    @lonyc : Tu veux vraiment pas mettre ton code ?

  11. #11
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par roro06 Voir le message
    Bonjour
    Ce code n'est d'aucune utilité, pourquoi fermer un recordset juste après l'avoir ouvert ?
    Parcequ'une fois ma requete executé je n'en ai plus besoin car c'est une insertion que je fait

  12. #12
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par roro06 Voir le message
    @lonyc : Tu veux vraiment pas mettre ton code ?
    Le code est assez compliqué, j'ai pas mal de fichier inclus et de fonctions.
    Ca serais trop long.
    Mais c'est pas bien grave, je vais juste fermer et détruire mon recordset tout à la fin de mon fichier, ca devrais marcher

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2012, 11h52
  2. operation is not allowed when the object is open
    Par chaima01 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/05/2011, 07h04
  3. Operation is not allowed when the object is closed
    Par allexpert dans le forum Développement
    Réponses: 0
    Dernier message: 20/10/2009, 19h51
  4. Operation Is Not Allowed In The Context
    Par jam92400 dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2006, 11h16
  5. Réponses: 8
    Dernier message: 21/11/2003, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo