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

    Istruzione per saltare un passo di un ciclo?

    Ciao a tutti,
    esiste un'istruzione ASP che consente di saltare una iterazione di un ciclo trasferendo l'esecuzione alla condizione di ingresso del ciclo stesso?

    Una cosa del tipo seguente:
    codice:
    do while not condizione
        if evento then
          'istruzione per saltare alla condizione del while
        endif
        'istruzioni da eseguire solo se non si verifica evento
    loop
    In alternativa potrei usare un goto ma non so se il costrutto é impiegabile in ASP e che sintassi richiede... ho provato con un semplice goto label ma non funziona!

    Grazie.
    Simone

  2. #2
    GOTO (per fortuna?) non esiste piu'. la IF per saltare uno o piu' cicli al verificarsi di certe condizioni va benissimo (btw, dovresti cmq fare una IF per governare il GOTO...)

  3. #3
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994

    Re: Istruzione per saltare un passo di un ciclo?

    codice:
    do while not condizione
        if evento then
          'fai quello che te pare
        else
          'istruzioni da eseguire solo se non si verifica evento
        end if
    loop
    così no?
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  4. #4
    Grazie Sypher e optime,
    in effetti l'if-then-else risolverebbe la cosa ma il ciclo é parecchio complesso ed ho un già un pò di if nidificati all'interno del while per cui la cosa più agevole sarebbe avere la possibilità di usare un costrutto che mi riporti "al volo" alla condizione del ciclo.

    Ho un cercato un pò su varie guide online ma nessuna fa cenno a tale possibilità... si parla solo di un "exit do" che però fa uscire subito dal ciclo senza controllare di nuovo la condizione.

    Ne sapete qualcosa?
    Grazie.
    Ciao.
    Simone

  5. #5
    non ho ben capito cosa devi fare.... se (ad esempio) x=1 NON devi eseguire il ciclo?

  6. #6
    Se x=1 voglio saltare tutto il codice che segue l'evento e tornare direttamente alla condizione di controllo dello while per fare una nuova verifica...

    Es.
    codice:
    do while not pRS.EOF
        if x=1 then
          pRS.MoveNext
          'da qua voglio poter tornare alla riga di 
          'verifica della condizione del ciclo while
        end if
        'codice che voglio eseguire solo se x <> 1
        pRS.MoveNext
    loop
    Per la complessità del ciclo non è agevole usare un if-then-else per cui mi chiedevo se esisteva questo tipo di scorciatoia in ASP...

  7. #7
    quimo (mi perplimi!) esiste il predicato ELSE!!!!!

  8. #8
    il controllo di x mettilo prima
    if x = 1 then

    else
    do
    if x=1 then exit do
    loop
    end if


    .......


    ripensandoci.....
    x=1 lo prendi da una lettura di file.... (mi pare di capire) fai una lettura con ordinamento (sort x asc)
    metti un do loop until x=1 cosi' scarti a priori tutti gli x = 1 ed esegui il do loop dopo che gli x=1 sono passati!


  9. #9
    Allora...
    spiego un pò più in dettaglio la cosa.

    Ho una pagina ASP che visualizza dei risultati di una query. Tali risultati sono paginati e l'ordine di presentazione dei record é modificabile cliccando sul campo di interesse (per cui Jacqui non posso ordinare il recordset come mi indichi tu...). Un campo data viene controllato con la data odierna in modo da decidere se quel determinato record é scaduto o meno (se sono passati tot giorni).

    Nel caso il record sia scaduto devo scartarlo per cui voglio eseguire un recordset.movenext e subito dopo andarmene di nuovo alla condizione do while not recordset.eof per processare il record successivo senza visualizzare alcun dato del record scaduto.

    Ovviamente sarebbe sensato fare...

    codice:
        do while not rs.EOF
        if DateDiff("d",rs("campoData"),Date()) > periodo then
            rs.MoveNext
        else
            Response.Write(rs("valoreCampo"))   
            rs.MoveNext
        end if
        loop
    ... ma il codice è più complesso di questo e non è agevole usare questa struttura, credetemi.

    Dato quindi che non pretendo che vi studiate il mio script, e ci mancherebbe, la mia domanda era semplice: esiste una istruzione che mi riporta alla condizione del ciclo? Tutto qua

    Grazie.
    Simone

  10. #10
    ritengo l'unico metodo possibile sia proprio quello che scrivi tu!
    se fai un exit do non puoi tornare indietro
    a meno che non crei una funzione con il response.write da richiamare solo se il record non è scaduto!

    do while not rs.EOF
    if DateDiff("d",rs("campoData"),Date()) > periodo then
    rs.MoveNext
    else
    FUNZIONE
    end if
    loop

    ti facilita la lettura e la lunghezza del codice è ridotta!


    non mi viene in mente altro!

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.