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 :

Erreur de type sur variable de session (tableau)


Sujet :

ASP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut Erreur de type sur variable de session (tableau)
    Bonjour,

    Voici le code :

    Four_ca.asp

    function Tri2()

    {
    document.forms.FormTriCA.submit();
    }

    [code..]

    <form method="post" action="Tri_ca.asp" name="FormTriCA"></form>

    [code..]

    DIM Tab(500, 3)

    [code..]

    <TD onclick="Tri2()"><strong><center> CA </center></strong></TD>

    [code..]

    session("TabCA1")=Tab

    Tri_ca.asp

    Dim Tab(500, 3)

    Tab=session("TabCA1") // ligne correspondant au message d'erreur

    Voici le message d'erreur :

    Erreur d'exécution Microsoft VBScript error '800a000d'
    Type incompatible

    Explications :

    Je transmets un tableau nommé Tab par l'intermediaire d'une variable de session nommée session("TabCA1") de Four_ca.asp à Tri_ca.asp. Celle-ci est recupérée par un tableau nommé Tab.

    Problème :

    La variable de session session("TabCA1") ne semble pas récupérer le tableau Tab de la page Four_ca.asp. Pourtant le tableau Tab de la page Four_ca.asp n'est pas vide. J'ai également testé avec un tableau reduit de 10éléments, des fois que ce soit un problème de taille mais ca ne change rien. J'ai également vérifié que je n'avais pas d'autres variables de session du même nom.

    Ca fait 24h que je suis bloqué, quelqu'un pourrait-il m'aider svp?

  2. #2
    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,

    Comment tu alimentes ta variable Tab ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bonjour pc75,

    qu'entends-tu par alimenter?

  4. #4
    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
    Citation Envoyé par G.D.O
    Bonjour pc75,

    qu'entends-tu par alimenter?
    Tu la remplis bien ta variable ?

    Ou j'ai mal compris ton problème.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bé à priori cette commande : session("TabCA1")=Tab est censée alimenter la variable TabCA1 par la variable Tab.

    Je mets le code en entier en plus si vous avez la force de lire :

    Four_ca.asp :

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <title>Liste des CAs par Fournisseurs </title>
    <CENTER><img src="imag/haut.jpeg" width="995" height="67"></CENTER><BR>
    <!--#include file="base.inc"-->

    </head>

    <HR>

    <center>
    <strong>
    <form method="post" action="tri.asp" name="stand">
    <% response.write("Veuillez entrer une date de début (JJ-MM-AAAA) :") %> <input type="text" name="dateDeb" value="<% IF (trim(session("d1")) <> "") THEN response.Write(session("d1")) END IF %>" > <br>
    <% response.write("Veuillez entrer une date de fin (JJ-MM-AAAA) &nbsp &nbsp &nbsp:") %> <input type="text" name="dateFin" value="<% IF (trim(session("d2")) <> "") THEN response.Write(session("d2")) END IF %>" > <br><br>
    <input type="submit" value="VALIDER">
    </FORM>
    </strong>
    </center>

    <HR><BR>

    <script language="javascript">

    function Tri1()

    {
    document.forms.stand.submit();
    }

    function Tri2()

    {
    document.forms.FormTriCA.submit();
    }

    </script>

    <%

    DIM Tab(500, 3)

    IF (trim(session("d1")) <> "") AND (trim(session("d2")) <> "") THEN
    d1=datevalue(session("d1"))
    d2=datevalue(session("d2"))
    ELSE
    d1=datevalue("10-10-1990")
    d2=datevalue("10-10-2100")
    END IF

    %>

    <body>

    <TABLE border="2" align="center">

    <TR bgcolor="#DDDDEE" style="cursor:pointer">
    <TD onclick="Tri1()"><strong><center> CODE FOURNISSEUR </center></strong></TD>
    <TD onclick="Tri1()"><strong><center> NOM FOURNISSEUR </center></strong></TD>
    <TD onclick="Tri2()"><strong><center> CA </center></strong></TD>
    </TR>

    <%

    IF session("TriCA")=0 THEN

    SET rsFour = Server.CreateObject("ADODB.Recordset")

    rsFour.open"SELECT Code_Fou, Nom FROM Fournisseurs ORDER BY Code_fou", conn

    indFour=0

    DO WHILE NOT rsFour.eof

    CodeFour=trim(rsFour("Code_fou"))
    NomFour=trim(rsFour("Nom"))
    SET rsFourSelect = Server.CreateObject("ADODB.Recordset")
    rsFourSelect.open"SELECT Num_cde FROM EnteteCdeAchat WHERE Code_Fou = '"& CodeFour &"' ", conn
    total=0

    DO WHILE NOT rsFourSelect.eof

    refCde = trim(rsFourSelect("Num_cde"))
    SET rsCA = Server.CreateObject("ADODB.Recordset")
    SET rsDate = Server.CreateObject("ADODB.Recordset")
    rsDate.open"SELECT Date_mvt FROM Mouvements WHERE Origine = '"& refCde &"' GROUP BY Origine, Date_mvt", conn

    IF NOT rsDate.eof THEN
    IF ( DATEVALUE(rsDate("Date_mvt")) >= d1 ) AND ( DATEVALUE(rsDate("Date_mvt")) <= d2 ) THEN

    rsCA.open"SELECT Prix_Unit, Quantite FROM LigneCdeFou WHERE Num_cde = '"& refCde &"'", conn

    IF NOT rsCa.eof THEN
    DO WHILE NOT rsCA.eof
    total = total + ( rsCA("Prix_unit") * rsCA ("Quantite") )
    rsCA.movenext
    LOOP
    END IF

    END IF
    END IF
    rsFourSelect.movenext

    LOOP

    IF total > 0 THEN
    Tab(indFour, 0)=CodeFour
    Tab(indFour, 1)=NomFour
    Tab(indFour, 2)=total
    indFour=(indFour+1)
    END IF
    rsFour.movenext

    LOOP

    FOR i=0 to (indFour-1)
    %>
    <TR>
    <TD><center> <% =Tab(i,0) %> </center></TD>
    <TD><center> <% =Tab(i,1) %> </center></TD>
    <TD><center> <% =Tab(i,2) %> </center></TD>
    </TR>
    <%
    NEXT

    session("TabCA1")=Tab
    session("Ind")=(indFour-1)

    ELSE

    Dim S(500,3)
    S=session("TabCA2")

    FOR i=0 to (session("Ind"))
    %>
    <TR>
    <TD><center> <% =S(i,0) %> </center></TD>
    <TD><center> <% =S(i,1) %> </center></TD>
    <TD><center> <% =S(i,2) %> </center></TD>
    </TR>
    <%
    NEXT

    END IF

    session("TriCa")=0

    %>

    </TABLE>

    <br>
    <form method="post" action="menuachat.asp">
    <center><input type="submit" value="Retour Menu Achat" style="width:15%"></center>
    </form>

    <form method="post" action="Tri_ca.asp" name="FormTriCA"></form>

    </body>
    </html>
    Tri_ca.asp :

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <title>Document sans titre</title></head>

    <body>

    <%

    Dim Tampon(1,3)
    Dim Tab(500, 3)

    Tab=session("TabCA1")
    response.Write(Tab(5,2))

    FOR i1=0 to session("Ind")

    FOR i2=(i1+1) to session("Ind")

    IF Tab(i1,2) > Tab(i2,2) THEN

    Tampon(0,0)=Tab(i1,0)
    Tampon(0,1)=Tab(i1,1)
    Tampon(0,2)=Tab(i1,2)

    Tab(i1,0)=Tab(i2,0)
    Tab(i1,1)=Tab(i2,1)
    Tab(i1,2)=Tab(i2,2)

    Tab(i2,0)=Tampon(0,0)
    Tab(i2,1)=Tampon(0,1)
    Tab(i2,2)=Tampon(0,2)

    END IF

    NEXT

    NEXT

    session("TabCA2")=Tab
    session("TriCa")=1
    'response.Redirect("Four_ca.asp")

    %>
    </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,

    Juste avant cette ligne :
    session("TabCA1")=Tab
    Peux tu afficher le contenu de Tab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 to uBound(Tab) - 1
       Response.Write Tab(i, 0) & " - " & Tab(i, 1) & " - " & Tab(i, 2) & "<br>"
    Next

  7. #7
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Il m'affiche tout correctement. Je l'avais déjà fait mais j'ai vérifié et Tab n'est pas vide : c'est bien pour ca que je bloque!!! Tab est rempli et session("TabCA1") ne veut pas s'initialiser avec Tab. Est-ce que ca peut venir du fait que le tableau Tab n'est pas rempli entièrement?

    Faut dire que je code un peu n'importe comment car ASP/VBScript commencent à me soulerrrrr.. je me sens trop limité avec ces langages j'ai l'impression de perdre mon temps à coder des choses simples parceque ASP/VBscript ne me permettent pas de faire grand chose. Dès que débloquais ce bug mon programme est fini et je passe en PHP5, j'ai trop la quinte d'être bloqué sachant que vraiment tout le reste fonctionne nickel

  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,

    Je viens de penser : Tab ne serait pas un mot réservé ?

  9. #9
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Non déjà penser aussi!

    Mais ca y est j'ai trouvé!!!

    C'est dans la déclaration de Tab dans la page Tri_ca.asp.

    "Dim Tab(500,3)"

    il faut mettre "Dim Tab" tout court puisque quand je fais "Tab=session("TabCA1")" Tab recoit le contenu ET la structure de TabCA1!

    C'est logique mais fallait le savoir! En fait dans les autres variables de session le problème ne se posait pas puisque ce n'était pas des tableaux et qu'il n'y avait pas de dimensions. J'avais déjà un tableau en session qui marchait mais je n'avais pas mis les dimenssions (une insouciance qui m'avait permis d'éviter un bug ).

    Enfin voilà c'est résolu! Merci tout de même pour ton temps et ta bonne volonté pc75!

    @ bientôt sur les forums (PHP cette fois-ci )

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

Discussions similaires

  1. Erreur sur variable de session
    Par Kazumi dans le forum Langage
    Réponses: 7
    Dernier message: 31/05/2013, 15h37
  2. Type des variables de sessions
    Par oclone dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/10/2008, 16h17
  3. Message d'erreur de type de variable
    Par maxmarie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2007, 17h15
  4. Réponses: 15
    Dernier message: 16/05/2007, 16h53
  5. Réponses: 12
    Dernier message: 10/06/2006, 19h06

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