• User Newbie

    errore Microsoft VBScript runtime error '800a000d' Type mismatch

    ciao raga,
    sono nuovo di questo forum e ho visto che siete molto affiatati,
    proprio quello che cercavo....
    visto che ho un problema con asp
    ho pubblicato un sito da un server di aruba dove funzionava ad uno mio con windows 2003 ed ecco il casotto mi da un errore quando inserisco la quantita' da ordinare sui prodotti vi posto la linea di codice in questione.
    grazie in anticipo.

    'If session("AddArt")=0 then
    'session("AddArt")=1
    session("cartIndex")=session("cartIndex")+1
    Session("ArtIndex")=Session("ArtIndex")+1
    Id=session("cartIndex")
    arrcart=session("myCart")

    Quantita=Request.Form("quantita")
    Codice=Request.Form("codice")
    Prodotto=Request.Form("descrizione")
    Base=Request.Form("basep")
    Check="O"
    Colore=Request.Form("colore")
    If Colore="" then
    Colore="da concordare"
    End If
    session("items")=session("items")+Quantita
    Data=Date()
    Ora=Time()
    Store=session("idStore")&"/"&session("idCustomer")&"/"&session("idAffiliate")

    arrcart(Id,1)= Quantita linea di errore
    arrcart(Id,2)= Codice
    arrcart(Id,3)= Prodotto
    arrcart(Id,4)= Base
    arrcart(Id,5)= Check
    arrcart(Id,6)= Colore
    arrcart(Id,7)= Data
    arrcart(Id,8)= Ora
    arrcart(Id,9)= Store

    session("myCart")=arrcart

    %>
    <script language="JavaScript" type="text/JavaScript">
    location.href="?go=prodotti&action=visualizza&gruppo=<%=Gruppo%>&descrizione=<%=Descrizione%>&articolo=<%=Codice%>#<%=Codice%>"
    </script>
    <%
    'End If
    End If
    %>


  • Super User

    ciao martucie e benvenuto sul forum GT

    l'errore Tye Mismacth indica una non corriposndenza tra tipi dati.

    da quello che mi pare di capire prendi la varabile quantita da un form, quindi come stringa..poi la passi a un array (mi pare di capire) che probabilmente invece si aspetta un intero (o comunque un dato numerico)

    prova a usare una funzione di conversione esplicita, anzichè lasciare che faccia una conversione implicita...

    prova con:

    arrcart(Id,1)= cInt(Quantita) --->converte in Integer

    o

    arrcart(Id,1)= cDbl(Quantita)-->converte in Double


  • User Newbie

    grazie per il consiglio ma niente da fare scusa ma ti volevo far vedere anche il dodice che mi identifica il campo quantità forse e questo da rivedere?

    <%
    Action=Request.QueryString("action")
    Gruppo=Request.QueryString("gruppo")
    Descrizione=UCASE(Request.QueryString("descrizione"))
    Articolo=Request.QueryString("articolo")

    DA=Replace(Request.ServerVariables("HTTP_REFERER"),"c'e' il link","")
    DA=Replace(DA,Request.ServerVariables("SERVER_NAME"),"")
    DA=Replace(DA,Request.ServerVariables("URL"),"")
    DA=Replace(DA,"?","")
    Session("Pagina")=DA
    %>
    <!--webbot BOT="GeneratedScript" PREVIEW=" " startspan -->
    <script Language="JavaScript">
    <!--
    function Ordina_Form_Validator(theForm)
    {

    if (theForm.quantita.value == "")
    {
    alert("Inserire un valore per il campo "Quantità".");
    theForm.quantita.focus();
    return (false);
    }

    var checkOK = "0123456789";
    var checkStr = theForm.quantita.value;
    var allValid = true;
    var decPoints = 0;
    var allNum = "";
    for (i = 0; i < checkStr.length; i++)
    {
    ch = checkStr.charAt(i);
    for (j = 0; j < checkOK.length; j++)
    if (ch == checkOK.charAt(j))
    break;
    if (j == checkOK.length)
    {
    allValid = false;
    break;
    }
    allNum += ch;
    }
    if (!allValid)
    {
    alert("Inserire solo cifra numerica nel campo "Quantità".");
    theForm.quantita.focus();
    return (false);
    }

    var chkVal = allNum;
    var prsVal = parseInt(allNum);
    if (chkVal != "" && !(prsVal >= "1" && prsVal <= "999"))
    {
    alert("Inserire un valore maggiore o uguale a "1" e minore o uguale a "999" nel campo "Quantità".");
    theForm.quantita.focus();
    return (false);
    }

    return (true);
    }
    //-->
    </script>
    <!--webbot BOT="GeneratedScript" endspan -->

    e poi volevo farti vedere dove avviene la querystring

    <%
    'Codice=Request.QueryString("gruppo")
    If Request.QueryString("Pagina") = "" Then
    PaginaCorrente = 1
    Else
    PaginaCorrente = cInt(Request.QueryString("Pagina"))
    End If
    RecordPagina=10

    Set connA = Server.CreateObject("ADODB.Connection")
    connA.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/WEB.mdb")
    If Gruppo="novita" then
    sqlA = "SELECT DISTINCT Articolo,Descrizione FROM News_Web ORDER By Articolo ASC"
    Else
    sqlA = "SELECT DISTINCT Articolo,Descrizione FROM Export_Web WHERE Mid(Articolo,1,2)='"&Gruppo&"' ORDER By Articolo ASC"
    End If
    Set rsUsA = Server.CreateObject("ADODB.Recordset")
    rsUsA.Open sqlA, connA, 1, 1

    If NOt rsUsA.EOf then
    rsUsA.PageSize = RecordPagina
    Pagine = rsUsA.PageCount
    rsUsA.CacheSize = RecordPagina
    TotArticoli = rsUsA.RecordCount
    rsUsA.AbsolutePage = PaginaCorrente
    Else
    TotArticoli=0
    Pagine = 0
    RecordTotali = 0
    End If
    If PaginaCorrente > Pagine Then
    PaginaCorrente = Pagine
    End If
    If PaginaCorrente < 1 Then
    PaginaCorrente = 1
    End If
    RecordShow = 0

    If NOt rsUsA.EOf then
    %>


  • Super User

    Ciao, dovresti farci vedere cos'è arrcart, ovvero quello che c'è dentro session("myCart")