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 :

rs.close ne veut pas marcher !! maintenant, si :)


Sujet :

ASP

  1. #1
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut rs.close ne veut pas marcher !! maintenant, si :)
    Ami(e) du jour, bonjour

    Quand je ferme la connexion a la fin de mes pages asp, je le fait ainsi, comme indiqué dans le tutoriel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Cnx.close
      rs.Close
      Set cnx=nothing
      set rs=nothing
    Le probleme est que ca me met le message d'ereur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ADODB.Recordset (0x800A0E78)
    Operation is not allowed when the object is closed.
    Si je met le rs.Close en commentaire (ou si je l'efface, ca revient au meme), l'erreur n'y est plus.

    je voudrais savoir
    - si cette erreur est normale :
    - si je peux laisser le rs ouvert tout le temps :
    - si ca vient de mon code :

    Merki beaucoup
    Pepito

  2. #2
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    ferme des recordset avant ta connexion!

  3. #3
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut pas mieux
    Pas mieux

    J'ai testé sur differentes pages au cas oú, mais le meme message d'erreur revient.

    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
      rs.Close    
      set rs=nothing      
      Cnx.close              
      Set cnx=nothing 
     
    ===================
     
      rs.Close
      Cnx.close  
      set rs=nothing
      Set cnx=nothing
     
    ===================
     
      set rs=nothing
      rs.Close
      Cnx.close  
      Set cnx=nothing
    Ca me fait toujours le meme message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ADODB.Recordset (0x800A0E78)
    Operation is not allowed when the object is closed.
    Et ca pointe vers la ligne du rs.close

    Pepit'

  4. #4
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    En principe le premier est bon

    C'est bizarre??

    Et avant ils ont été déclaré et ouvert?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Salut,

    le mesage te dit qu'il ne peut pas fermer un recordset qui n'est pas ouvert

  6. #6
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut ma declaration
    Je vous met comment je declare tout ce beau monde !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      'Path long de la base de données'
      Dim cnx, rs, rs2, sql, sql2, dbPath
      dbPath = Server.MapPath("../database/gato.mdb")
     
      'Création de l'objet permettant la connexion'
      Set cnx = Server.CreateObject("ADODB.Connection")
     
      'Connexion''
      cnx.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath
      Set rs = Server.CreateObject("ADODB.RecordSet")
      Set rs2 = Server.CreateObject("ADODB.RecordSet")
     
      sql= "INSERT INTO pages(nomPageF,textF) VALUES ('"& titreF &"','"& contenuF &"');"		
      rs.Open sql,cnx
    Pepit'

  7. #7
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Hi Pepito

    il te sert a quoi le second recordset ?

  8. #8
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut comme ca vous savez tout. :)
    C'est pour une deuxieme requete que je fais un peu apres.

    En fait dans la 1ere requete (dont le resultat se stock dans rs), j'enregistre les donnees du formulaire de la page precedente,
    Et ensuite, dans la deuxieme requete (dont les resultats sont stockés dans rs2), je recupere le id de cet enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      sql2= "SELECT TOP 1 * FROM pages ORDER BY idPage DESC;"
      rs2.Open sq12,cnx
     
      idPage=rs2("idPage")
    Je ferme le rs2 en meme temps que le rs, mais je pense pas que ca vienne de lá, car meme si je met tout ce qui concerne la 2nde requete en commentaire, (ce qui fait que je me retrouve qu'avec la 1ere requete), le probleme reste identique.

    Pepit' 8)

  9. #9
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Re Pepito
    La classe connection sans dsn
    essaye ça pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Dim cnx, rs, rs2, sql, sql2, dbPath
      dbPath = Server.MapPath("../database/gato.mdb")
     
      'Création de l'objet permettant la connexion'
      Set cnx = Server.CreateObject("ADODB.Connection")
     
      'Connexion''
      cnx.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath
     
      sql= "INSERT INTO pages(nomPageF,textF) VALUES ('"& titreF &"','"& contenuF &"');"
     
    Set rs = Server.CreateObject("ADODB.RecordSet")
     
      rs.Open sql,cnx
     
    bla bla bla bla
     
     
    rs.close
    set rs= nothing
    cnx.close
    set cnx = nothing

  10. #10
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut Thanks but...
    Merci mais, T'as juste mis le
    Set rs = Server.CreateObject("ADODB.RecordSet")
    apres la requete ??

    Ca marche, mais seulement quand le rs.Close est pas lá Et ca, c'etait deja le cas avant.
    Et c'est pas top de le laisser ouvert.
    Si je rajoute rs.Close a la fin, ca marche plus. Le meme message d'erreur.

    C'est embetant de laisser le rs ouvert, sachant que j'en ai 1 a chaque page (a peu pres) et que j'ai une 30aine de pages :

    Pepit'

  11. #11
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Bon j'ai une autre idée mais aprés mon stock sera epuisé lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
     dbPath = Server.MapPath("../database/gato.mdb")
     
    sql= "INSERT INTO pages(nomPageF,textF) VALUES ('"& titreF &"','"& contenuF &"');"
     
     Set cnx = Server.CreateObject("ADODB.Connection")
     
     cnx.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath
     
    Set rs = cnx.execute sql
     
    rs.close
    set rs= nothing
    cnx.close
    set cnx = nothing
    comme tu peux le voir j'ai juste changé le cnx.open par cnx.execute essaye et dis moi

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    re,

    et t'as pas besoin de recordset pour executer une instruction INSERT ou update

    ObjetConnexion.Exsecute chaine SQL est suffisant

    Lorsque tu ne peux pas fermer un recordset qui n'est pas ouvert, ca semble normal. Pour vérifier qu'il est ouvert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rs.open sql
    If not rs.EOF then
     
    Else
     
    Enf If

  13. #13
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      'Path long de la base de données'
      Dim cnx, rs, sql, dbPath
      dbPath = Server.MapPath("../database/gato.mdb")
     
      sql= "SELECT * FROM pages;"
     
      'Création de l'objet permettant la connexion'
      Set cnx = Server.CreateObject("ADODB.Connection")
     
      'Connexion''
      cnx.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath
      'Set rs = Server.CreateObject("ADODB.RecordSet")
      Set rs = cnx.execute sql
    Ca me met un NOUVEAU message d'erreur !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Error Type:
    Microsoft VBScript compilation (0x800A0401)
    Expected end of statement
    /pepito/gateaux/admin/page_mo.asp, line 62, column 21
    Set rs = cnx.execute sql
    --------------------^
    Je vous retrouve lundi pour la suite de l'enigme du rs.Close !!
    (ben oui, j'ai pas internet le week end)

    Pepit' 8)

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Et tu as cherché à trouver une réponse avant de poser la question sur le forum? Un erreur de syntaxe ne devrait pas être difficile à corriger pourtant : DevGuru

  15. #15
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut Resolu :)
    Deja, pour repondre franculo_caoulene, bien sur que j'ai cherché. Je vais pas attendre pendant trois jours derriere mon PC a faire que des F5 pour voir si quelqu'un a mis un nouveau message !!
    Et puis, posté un message sur developpez.com, c'est aussi chercher (sinon a quoi ca sert ?? Quand on met un message trop compliqué, 9/10 on n'a pas de reponse.)

    Et je voulais te dire aussi merci car ton lien m'a beaucoup servi. maintenant, j'ouvrirai mes record.set de cette maniere.

    Maintenant ca marche.
    Je vous met le resultat final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
      'Path long de la base de données'
      Dim cnx, rs2, sql, sql2, dbPath
      dbPath = Server.MapPath("../database/gato.mdb")
     
      'Création de l'objet permettant la connexion'
      Set cnx = Server.CreateObject("ADODB.Connection")
     
      'Connexion''
      cnx.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath
     
      sql= "UPDATE cakes SET nomCake='"& titre &"', DescrFranc='"& descrF &"' WHERE idCake="& idCake &";"		
     
      cnx.execute(sql) '<-- pour executer une requete qui ne retourne rien (insert, update,delete)
     
      sql2= "SELECT * FROM cakes WHERE idCake="& idCake &";"
     
      set rs2 = cnx.execute(sql2) '<-- pour executer une requete qui retourne des donnees (select)
     
    ==========================================
     
    'et pour la fermeture'
      rs2.Close
      Set rs2=nothing
      Cnx.close
      Set cnx=nothing
    Un grand merci a tous, pmboutteau, Gwenn (qui est de Bordeaux comme moi - coucou), NeHus, et encore franculo_caoulene

    Et c'est avec fierté, et vous pouvez tous etre fier, que je clic sur le bouton "Resolu" !!

    Pepit'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/06/2009, 12h18
  2. [OpenOffice][Tableur] bouton qui ne veut pas marcher (macro assignée ne se déclenche pas)
    Par mipps dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 12/01/2009, 12h16
  3. public class ne veut pas marcher!
    Par jerem721 dans le forum Graphisme
    Réponses: 3
    Dernier message: 19/09/2007, 20h45
  4. [MySQL] INSERT INTO qui ne veut pas marcher
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/03/2007, 17h42
  5. mon "insert" ne veut pas marcher !!
    Par harlock59 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/01/2006, 13h17

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