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 :

nom de l'indice de boucle plante ma page!Si i ca plante, pas si j!


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut nom de l'indice de boucle plante ma page!Si i ca plante, pas si j!
    Bonjour,

    J'ai un comportement super bizzare dans mon programme !
    J'ai une boucle for, si je nomme l'indice "i" , ca plante ma page, si je nomme l'indice de boucle "j", ca marche nickel. Lorsque j'ai une erreur le code est :
    [quote]
    Objet Response error 'ASP 0104 : 80070057'

    Opération non autorisée

    /rep1/rep2/ma_page.asp, line 0
    [/code]
    Alors vous allez me dire que c'est certainement parce que ma boucle for se situe dans une autre boucle dont l'indice est déjà i, ou que j'ai déjà une variable nommée i quelque part, et bien même pas !
    Je vous résume comment se compose ma page
    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
     
    'inclusion d'un fichier qui declare des classes
    action=Request("action")
    'creation chargement d'un objet
    select case action
      case "add"
        'requete pour recuperer la variable max_importance
        for i=1 to max_importance+1
          if i=Cint(rs_get_categorie("Importance")) then
            selected="selected"
          else
            selected=""
          end if
          response.write("<option value="""&i&""" "&selected&">"&i&"</option>")
       next
    end select
     
    MonObjet.Display()
    C'est en gros la structure de ma page, je précise que la méthode "Display()" de mon objet fonctionne parfaitement, je l'utilise sur plein d'autre page et je n'ai aucun probleme avec. En résumé mon objet est en permanence affiché en bas de la page par appel de la méthode Display, j'ai un select en haut du code qui effectue des opérations en fonction de la variable "action". Lorsque l'action est "add", il y a une boucle for qui est executée et c'est elle qui pose problème.
    Dans cette page, lorsque l'action est "add", j'obiens l'erreur. Si je met en commentaire le code de la boucle for , ca marche nickel , et pire si je renomme simplement l'indice de boucle en l'appelant j au lieu de i, ca marche nickel et c'est la que je ne comprends pas !!!
    Ca n'a aucun sens, nulle part je ne fais appel a une boucle for dans mon code, sauf dans la méthode Display de ma classe, et ca ne peut pas interferer puisque je suis dans un objet et en plus l'appel de la méthode Display se fait de toutes manières à l'extérieur de ma boucle for !

    Donc, j'ai la solution, il me suffit de nommer mon indice j au lieu de i, mais ce que je voudrais c'est comprendre pourquoi ?

    Avez vous une idée de ce qui se passe pour que j'obtienne un tel résultat ?

    Merci

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

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

    max_importance correspond à quoi ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    max_importance correspond a une variable integer qui est instanciée plus haut dans le code a partir d'un champ de la base de donné (celui dont la valeur du champ importance est la plus elevée) de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    max_importance=Cint(rs_get_categorie("Importance"))
    J'ai bien testé sa valeur, il n'y avait aucun problème dessus ; j'ai même carrément remplacé max_importance dans la boucle par un chiffre entier
    et le problème reste le même.
    Idem j'ai testé ce qu'il y a à l'intérieur de la boucle des fois que ça vienne de mon recordset, mais, le problème reste le même, même si je place dans la boucle un simple response.write("toto") ca ne fonctionne pas

    Enfin je te remercie de te pencher sur mon problème parce que c'est vrai que la je comprends vraiment pas !

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

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

    Cette ligne me gene un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    selected="selected"
    Je crois que selected est un mot réservé

    Extrait de MSDN
    Selected, propriété


    Renvoie ou définit l'état de sélection d'un élément dans un contrôle FileListBox ou ListBox. Cette propriété est un tableau de valeurs booléennes comprenant le même nombre d'éléments que la propriété List. Cette propriété n'est pas disponible aumoment de la création.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    [edit] desolé j'avais pas vu ton poste, je tapais le miens en même temps, pour selected je savais pas mais dans tous les cas ca n'est pas lui qui plante la page, lit la suite de mon poste tu verras c'est trop bizzare !

    ok, je viens de faire quelques tests, c'est encore plus fort que prévu ! J'ai fait une page de test dans laquelle il n'y a que 20 lignes : une boucle for i et l'appelle de la méthode display de mon objet, ca donne ca :
    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
     
    <%
    Set monObjet=New maClasse
    	monObjet.Load 10  'id d'un champ dans la base
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
    </head>
    <body>
    <%
    for i=1 to 5
    	response.write("toto")
    next
    if isObject(monObjet) then
    	monObjet.Display()
    end if
    %>
    </body>
    </html>
    Voila et donc avec ce code, j'ai le même plantage avec une boucle for i et par contre ca marche nickel avec une boucle for j.

    Je viens de pousser les tests un peu plus loin ; j'explique un peu ce qu'est mon objet et ce que fait la méthode display avant :
    monObjet correspond a un questionnaire et il contient un tableau d'objet correspondant aux questions du questionnaires.
    La methode display affiche l'intitulé du questionnaire et parcours les questions pour les afficher.
    Si j'ai une boucle for i ca plante des l'instant ou mon questionnaire contient plus de 1 questions
    Si j'ai une boucle for j, ca fonctionne même si il contient un nombre important de questions.
    Ca m'embrouille de plus en plus, pourquoi le nombre de questions influe sur le plantage ? en plus au bout de 2 questions ca plante, ca me parait incroyable alors qu'avec une boucle for j je peux en mettre autant que je veux sans que ca plante !

  6. #6
    Expert confirmé
    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
    Par défaut
    Salut,

    As-tu essayé les autres lettres de l'alphabet?

    Est-ce que tu utilise "Option explicit"?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Par défaut
    Citation Envoyé par Immobilis
    Salut,

    As-tu essayé les autres lettres de l'alphabet?

    Est-ce que tu utilise "Option explicit"?

    A+
    Oui bien vu ! ca etre un truc dans le genre

    ou une variable globale i déclarée dans un include

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

Discussions similaires

  1. [Débutant] Nom de variable indicé, boucle for
    Par Paulo64 dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/08/2010, 16h28
  2. Réponses: 5
    Dernier message: 23/08/2006, 22h45
  3. [PHP-JS] Récupérer le nom d'un indice de $_POST
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 23/08/2006, 17h04
  4. [FLASH MX2004] [AS2] Valeur d'indice de boucle dans evenement
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 02/05/2006, 10h43
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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