Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    error '80040e10' su stringa sql

    Ciao a tutti, continuo ad avere questo errore
    Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

    /nuovosito/cerca.asp, line 39

    su questa pagina (la linea 39 è stata evidenziata)
    codice:
    <%@LANGUAGE = JScript%>
    <html>
        <head>
            <title>Cerca nel sito</title>
        </head>
    <body>
    
    <h3>Cerca nel sito</h3>
    
    <form method="POST" action="cerca.asp?cerca=OK">
        <input type="text" name="stringa">
        <input type="submit" value="Cerca">
    </form>
    
    <%
        var cerca = new String(Request.QueryString("cerca"));
        var testo = new String(Request.Form("stringa"));
        var apice = testo.replace(/'/g,"''");
        var stringa = apice.split(" ");
        if (cerca == "OK")
        {
            if (testo == "" || testo == "undefined")
            {
                Response.Write("
    
    Inserire almeno una parola per effettuare una rcerca</p>");
            }
            else
            {
                var Cn = new ActiveXObject("ADODB.Connection");
                    Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/database.mdb"));
                var sql = "SELECT * FROM Notizie WHERE "
                for (var i=0; i<stringa.length; i++)
                {
                    if (i > 0)
                    {
                        sql += " AND";
                    }
                    sql += " descrizione LIKE '%" + stringa[i] + "%'";
                }
                var Mostra = Cn.Execute(sql);
                if (Mostra.EOF)
                {
                    Response.Write("
    
    Nessun risultato</p>");
                }
                else
                {
                    while (!Mostra.EOF)
                    {
                        with (Response)
                        {
                            Write("
    
    ");
                            Write("" +Mostra("Titolo") + "
    ");
                            Write(Mostra("descrizione"));
                            Write("</p>");
                            Mostra.MoveNext();
                        }
                    }
                }
                Cn.Close();
            }
        }
    %>
    
    </body>
    </html>
    Ho provato a vedere un po in rete ma non riesco a risolvere.
    Mi potete aiutare?
    Grazie.

    (le mie conoscenze di asp sono limitate, quindi siate chiari per favore. Non mi dite cosa devo fare come se fossi una programmatrice esperta... :master: )

  2. #2
    fatti stampare la stringa sql e provala sul db per vedere se è corretta

    codice:
    response.write(sql);
    response.end();
    var Mostra = Cn.Execute(sql);
    prova ad aprire il recordset in questo modo

    codice:
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.open (ssql,Cn,3,3)
    invece di usare
    var Mostra = Cn.Execute(sql);

  3. #3

    Non va.

    se
    codice:
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.open (ssql,Cn,3,3)
    ho
    Microsoft JScript runtime error '800a1391'

    'ssql' is undefined

    /nuovosito/cerca.asp, line 40
    se correggo a naso
    codice:
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.open (sql,Cn,3,3)
    ho di nuovo

    Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

    /nuovosito/cerca.asp, line 40
    La linea 40 è esattamente quella che mi hai consigliato ovvero
    codice:
    Mostra.open (sql,Cn,3,3)

  4. #4
    Ah, dimenticavo, se uso il response write mi dice
    Microsoft JScript runtime error '800a1391'

    'response' is undefined

    /nuovosito/cerca.asp, line 39

  5. #5
    hai provato a fatti stampare la query prima di eseguirla?
    hai provato ad eseguirla su database?

    codice:
    response.write(sql);
    response.end();
    var Mostra = Cn.Execute(sql);

  6. #6
    Originariamente inviato da TaniaPellizzari
    Ah, dimenticavo, se uso il response write mi dice

    Response.Write (sql)

    stai usando un linguaggio case sensitive quindi devi scrivere correttamente le maiuscole e minuscole

  7. #7
    Risolto.
    Semplicemente avevo scritto male il nome della colonna della tabella e quindi non la trovava nel database.

  8. #8

  9. #9
    purtuttavia... :rollo: e se volessi che questo motore cercasse in diverse tabelle dello stesso database?
    esempio: la tabella novita, quella documenti, quella articoli, quella download ecc.???

    e... altra cosa.
    Visto che alcune tabelle hanno una struttura differente, posso inserire anzichè il nome del campo (es. titolo) un riferimento generale? es
    codice:
    <%=rs(1)%>

  10. #10
    potresti modificare in questo modo la creazione della query

    codice:
    var sql = "SELECT * FROM Notizie, documenti, articoli, download"
    sql += " WHERE 1=1"
    for (var i=0; i<stringa.length; i++)
    {
        sql += " OR Notizie.campo LIKE '%" + stringa[i] + "%'";
        sql += " OR documenti.campo LIKE '%" + stringa[i] + "%'";
        sql += " OR articoli.campo LIKE '%" + stringa[i] + "%'";
        sql += " OR download.campo LIKE '%" + stringa[i] + "%'";
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.