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 :

Close d'un recordset apres un delete


Sujet :

ASP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Close d'un recordset apres un delete
    Bonjour à tous,
    J'ai une erreur que je ne comprends pas lorsque je fais un delete en base de données

    je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sqlStr = "DELETE FROM USAGE WHERE ID_BIEN IN";
                     sqlStr += "(SELECT ID_BIEN FROM BIEN WHERE ID_UF = '" + id +"')";
                     Response.Write("<br>" + sqlStr);
    	             oRS.Open (sqlStr, oCon,1,2);
     
    	             Response.Write("<br>usages supprimés");
    	             oRS.Close();
    et j'ai l'erreur
    impossible d'effectuer l'opération lorsque l'objet est fermé
    pourtant il me fait bien le delete en BDD, et lorsque j'enleve le oRS.Close(); il n'y a pas de probleme... Je trouve ca bizarre vu qu'on m'a toujours dit de fermer un recordset apres l'avoir ouvert... Donc j'ai peur qu'au bout d'un moment avec cette méthode j'ai un trop grand nombre de recordsets ouverts..
    ou alors peut etre que le fait de faire un delete ferme automatiquement le recordset ?
    Quelqu'un pourrait t'il m'eclairer ?

    Merci beaucoup

  2. #2
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    je pense que tu dois avoir une autre requete précédemment de celle ci, et cela pose un probleme, ou une fin de parenthese lors d'une boucle...

    colle nous ton code entier
    Tuxboard Blog d'actu Buzz...
    Video de sport

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Pour un delete, tu devrais faire un Execute plutôt qu'un Open.

  4. #4
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    Citation Envoyé par pc75
    Bonjour,

    Pour un delete, tu devrais faire un Execute plutôt qu'un Open.
    SQL="DELETE * FROM xxxxxxx" _
    & " WHERE xxxxxx"
    conn.Execute(SQL)
    Tuxboard Blog d'actu Buzz...
    Video de sport

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Joe Le Mort
    je pense que tu dois avoir une autre requete précédemment de celle ci, et cela pose un probleme, ou une fin de parenthese lors d'une boucle...

    colle nous ton code entier

    c'est ma 1ere requete ... et le open marche bien donc je ne comprends pas pourquoi le close marcherait pas

    voici le code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <%@ Language = JavaScript %>
     
     
    <html>
     
        <head>
     
     
        </head>
     
        <body>
        <script language=JavaScript>
            alert(document.location);
        </script>
        <%
            var id = Request("id");
            var type = Request("type");
            var motif = Request("motif");
     
     
            //Parametres de connexion a la BDD
            var strBDName = Session ("database");
    	    var strBDLogin = Session ("User");
    	    var strBDPwd = Session ("Password");	
     
    	    var oRS = Server.CreateObject ("ADODB.RecordSet"); 
    	    var oCon = Server.CreateObject ("ADODB.Connection");
     
    	    var sqlStr;
     
     
            if (type == "uf")
            {
     
    	        oCon.Open (strBDName,strBDLogin,strBDPwd);
     
     
                try
    	         {
    	             //Suppression des usages liés à l'uf
    	             sqlStr = "DELETE FROM USAGE WHERE ID_BIEN IN";
                     sqlStr += "(SELECT ID_BIEN FROM BIEN WHERE ID_UF = '" + id +"')";
     
    	             oRS.Open (sqlStr, oCon,1,2);
    	             Response.Write("<br>usages liés à l'uf supprimés");
    	             //oRS.Close();   
     
    	             //Suppression des usages liés aux batiments
    	             sqlStr = "DELETE FROM GEOPAT_UNITE_USAGE WHERE ID_BIEN IN";
    	             sqlStr += "(SELECT ID_BATI FROM GEOPAT_BATI WHERE ID_UF = '" + id +"')";
     
    	             oRS.Open (sqlStr, oCon, 1, 2);
    	             //oRS.Close();   
    	             Response.Write("<br>usages liés aux batiments supprimés");
     
     
    	         }
    	        catch(e)
    	        {
    	            Response.Write("<br>Erreur pendant la suppression : " + e.number + " - " + e.description);   
    	            Response.End();
    	        }
    	        oCon.Close();
    	    }//  if (type == "uf")
         %>
     
        </body>
     
    </html>

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Je dois être fatigué, mais ton code me perturbe (pour de l'ASP) !

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    oui, c'est une page asp mais avec du code javascript ....
    ne m'en voulez pas je ne fait que reprendre le code de quelqu'un avant moi qui a fait toutes ses pages selon ce modele

  8. #8
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Et as-tu essayé d'utiliser la méthode Execute (qui ne nécessite pas de fermeture) au lieu de la méthode Open ?

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par pc75
    Re,

    Et as-tu essayé d'utiliser la méthode Execute (qui ne nécessite pas de fermeture) au lieu de la méthode Open ?

    Tu viens de m'y refaire penser et ca marche
    sauf que dans mon cas en tout cas ce n'est pas "delete * from xxxx where ..." mais "delete from xxx where ..."

    Merci beaucoup pour vos réponses

  10. #10
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    Citation Envoyé par tibtibby
    sauf que dans mon cas en tout cas ce n'est pas "delete * from xxxx where ..." mais "delete from xxx where ..."
    ouais je sais, j'a irepris ca sur un site pour te montrer le Execute
    C'es tclair qu'il y a une grosse erreur m'en vais leur dire
    Tuxboard Blog d'actu Buzz...
    Video de sport

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

Discussions similaires

  1. [AC-2003] Pb ouverture recordset après spec d'un mot de passe
    Par Jordmund dans le forum Sécurité
    Réponses: 3
    Dernier message: 29/04/2010, 11h23
  2. Tablespace toujours plein aprés gros delete
    Par neo.51 dans le forum Administration
    Réponses: 11
    Dernier message: 24/11/2008, 20h10
  3. probleme trigger update apres un delete
    Par agur29 dans le forum Développement
    Réponses: 10
    Dernier message: 12/09/2007, 19h30
  4. [MySQL] Remettre auto_increment d'une table à 1 après un delete
    Par Joe Le Mort dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/01/2007, 09h40
  5. aprés un delete dans un formulaire
    Par Valarauko dans le forum XMLRAD
    Réponses: 2
    Dernier message: 11/01/2005, 14h02

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