Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    9

    problema nella gestione di un ciclo

    Buongiorno e scusate per il disturbo,
    ma non ne riesco a venir fuori.
    Premetto di non essere esperto, però ho necessità di condurre un lavoro in porto. Espongo il problema:
    ho una pagina in cui c'è un form per la ricerca full text su 2 campi di una query access. Trattandosi di una joint uno a molti succede che per una singola azienda ci sono più record. Il problema nasce, appunto, con la ricerca dal momento che nel campo dettaglioProdotto sicuramente il contenuto è diverso in ogni record, mentre il campo schedaTesto si replica in ogni record, sicchè il risultato della ricerca, soprattutto se si trova qualcosa proprio in scheda testo, è la replica della stessa azienda su più righe.
    Avevo allora pensato di buttar giù uno script che valutasse l'IDAzienda e in base al suo valore visualizzasse o meno il record.
    Lo script è questo:
    <%
    var cerca = new String(Request.QueryString("cerca"));
    var testo = new String(Request.Form("stringa"));
    var apice = testo.replace(/'/g,"''");
    var stringa = apice.split(" ");
    var idAZ = 0;
    if (cerca == "OK")
    {
    if (testo == "" || testo == "undefined")
    {
    Response.Write("

    Inserire almeno una parola per effettuare una ricerca</p>");
    }
    else
    {
    var Cn = new ActiveXObject("ADODB.Connection");
    Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("/mdb-database/SpesaAz.mdb"));
    var sql = "SELECT * FROM AziendeProdotti where ";
    for (var i=0; i<stringa.length; i++)
    {
    if (i > 0)
    {
    sql += " AND";
    }
    sql += " DettaglioProdotto + SchedaTesto LIKE '%" + stringa[i] + "%'";

    }
    sql += "ORDER BY Citta ASC";
    var Mostra = Cn.Execute(sql);

    if (Mostra.EOF)
    {
    Response.Write("

    Nessun risultato</p>");
    }
    else
    {
    while (!Mostra.EOF)
    {

    with (Response)
    {
    if (Mostra("IDAzienda") != idAZ)
    {
    var idAZ = (Mostra("IDAzienda")) ;
    Write("

    ");
    Write("[img]Images/Freccina3.gif[/img]");
    Write(" ");
    Write("" +Mostra("Denominazione") + "
    ");
    Write(" - ");
    Write(Mostra("Citta"));
    Write("</p>");
    Mostra.MoveNext();
    }
    else
    {
    var idAZ = (Mostra("IDAzienda")) ;
    Mostra.MoveNext();
    }
    }
    }
    }
    Cn.Close();
    }
    }
    %>

    il problema è che mi visualizza solo il primo record che soddisfa la condizione e poi basta. Da qualche parte cè un qualche errore logico che però non riesco a vedere
    Mi potreste dare una mano?
    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi usare una variabile d'appoggio che prenda il valore dell'id dell'azienda SOLO se da esso diverso.

    appo_id = "" (fuori dal ciclo)
    nel ciclo:
    if appo_id <> azienda_id then
    appo_id = azienda_id
    'e mostri i risultati
    end if

    Ho scritto in VbScript, traduci in JScript.

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    9
    ho aggiunto la variabile e i comandi così come consigliato
    però mi da questo errore
    Microsoft JScript compilation error '800a03ed'

    Expected '('

    /Nazionale/RicercaListaAziendeProdottiParticolariProva.asp, line 204

    if appo_id <> Mostra ("IDAzienda") then
    ---^
    Si aspetta una parentesi. Le ho provate proprio tutte ma niente. Ti riscrivo la parte di codice incriminato così vedi dove sto sbagliando
    Grazie per il sollecito contributo

    appo_id = "";

    if (Mostra.EOF)
    {
    Response.Write("

    Nessun risultato</p>");
    }
    else
    {
    while (!Mostra.EOF)
    {

    with (Response)
    {
    if appo_id <> Mostra ("IDAzienda") then
    {
    appo_id = (Mostra("IDAzienda")) ;
    Write("

    ");
    Write("[img]Images/Freccina3.gif[/img]");
    Write(" ");
    Write("" +Mostra("Denominazione") + "
    ");
    Write(" - ");
    Write(Mostra("Citta"));
    Write("</p>");
    Mostra.MoveNext();
    }
    end if
    }
    }
    }
    Cn.Close();
    }
    }
    %>

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Te lo dice, manca una parentesi...

    if (....)

    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    9
    scusami, però dovunque io piazzi le parentesi mi da errore di sintassi. Le ho provate tutte, di sicuro c'è qualcosa che sbaglio. Aiutami a cavare questo ragno dal buco. Non sono più un giovincello e la testa mi duole terribilmente ... grazie

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Vediamo cosa hai scritto

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    9
    Questo è l'ultima prova fatta e mi da errore di sintassi. le parentesi le ho piazzate subito dopo if aperta e chiusa prima di end if
    Ho provato anche ad isolare tra parentesi solo la parte if then ma nulla ...

    with (Response)
    {
    if (appo_id <> Mostra ("IDAzienda") then

    appo_id = (Mostra("IDAzienda")) ;
    Write("

    ");
    Write("[img]Images/Freccina3.gif[/img]");
    Write(" ");
    Write("" +Mostra("Denominazione") + "
    ");
    Write(" - ");
    Write(Mostra("Citta"));
    Write("</p>");
    Mostra.MoveNext();
    )
    end if
    }

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prima, ad esempio, la IF l'hai scritta così:

    if (i > 0)

    ora perché metti l'end if (di VBScript) e sposti la chiusura della parentesi alla fine di tutto il blocco?

    Roby

    Roby

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    9
    l'ho scritto così
    if (appo_id <> (Mostra "IDAzienda")) then
    e poi così
    if (appo_id <> (Mostra "IDAzienda") then)
    ed ancora così
    if (appo_id <> Mostra "IDAzienda") then
    ma nulla, da sempre errore di sintassi, perciò ho provato con una sorta di ibridazione utilizzando end if e chiudendo tutto il blocco tra parentesi, ma non va uguale

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il THEN non esiste in JScript... perché continui a metterlo???

    Roby

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.