Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125

    Bloccare esecuzione script ASP

    Ciao, non riesco a far funzionare questo codice che dovrebbe bloccare (response.end) l'esecuzione di uno script ASP se si verifica la prima delle condizioni ( if Data <> date() ):
    codice:
    Do While NOT rs.EOF
    
    soggetto = rs("soggetto")
    titolo = rs("titolo")
    Data = rs("data")
    
    if Data <> date() then
                 response.write "bla bla"
    
    if rs("Soggetto") <> "KO" then
                 
                 Response.Write "&rs("Soggetto")&"
    else
                 Response.Write "&rs("titolo")&"
    end if
    
           Response.end 
           end if           
       
           rs.MoveNext
           Loop
    In pratica lo script si blocca ma visualizza soltanto l'ultimo dei record che corrispondono ai criteri di estrazione di una query precedente... :master:

  2. #2
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    152
    Qualche considerazione:

    1) Data <> Date() è pericoloso: è possibile che il DB ti formatti la data diversamente da come te la aspetti con un date()

    2) Hai provato ad invertire l'order by della select?

    3) immagino che sia solo per Debug ma ad un response.end preferirei un exit do ed una bella chiusurina del recordset e della connessione a fine loop

    Spero, se non ti ho risolto il problema, di avertene creato qualche altro

    Cia'

  4. #4
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Grazie per aver avuto il coraggio di rispondere.

    Riguardo alle tue considerazioni:

    1) Sulle date non ho problemi perchè nel db access sono formattate come aaaa/mm/gg e i vari response.write restituiscono la giusta formattazione;

    2) Non ho provato ad invertire l'ordine della select;

    3) Non conosco il metodo exit do, puoi farmi un esempio da adattare al mio codice?

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    152
    Altra considerazione.

    1) perchè non metti il filtro Data <> date() direttamente nella select? Ti risparmi un recorset più grande del necessario, un loop con if inutile e magari risolvi pure il problema :-)


    Comunque per l'exit Do ecco il coce riveduto e corretto secondo la mia visione dello script (ho tolto pure qualche " che mi sembrava inutile (sempre secondo la mia opinabile visione dello script :-) )

    Do While NOT rs.EOF
    soggetto = rs("soggetto")
    titolo = rs("titolo")
    Data = rs("data")
    if Data <> date() then
    response.write "bla bla"
    if rs("Soggetto") <> "KO" then
    Response.Write rs("Soggetto")
    else
    Response.Write rs("titolo")
    end if
    Exit do
    end if
    rs.MoveNext
    Loop

    rs.close
    Set rs = Nothing
    Conn.Close
    Set Conn = Nothing
    ' Fine pagina o response.end

  6. #6
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Grazie Eas, ci siamo "quasi", infatti se il codice è questo (cioè nessuna delle condizioni è verificata):
    codice:
    Do While NOT rs.EOF
    
    Anno = rs("Anno")
    Mese = rs("Mese")
    
    DataOggi = "20/10/2005"
    DataIeri = "19/10/2005"
    
    if DataOggi = DataIeri then
                 response.write "Condizione Data
    "
    
    if rs("Anno") = 3000 then
                 
                 Response.Write rs("Anno") &"
    "
                 Response.Write "condizione Anno
    "
    else
                 Response.Write rs("Mese") &"
    "
                 Response.Write "condizione mese
    "
    end if
    
    Exit do 
           end if           
       
           rs.MoveNext
           Loop 
    
    response.write "Nessuna delle condizioni si è verificata."
    
    rs.close 
    Set rs = Nothing 
    Conn.Close 
    Set Conn = Nothing
    Il codice restituisce giustamente che "Nessuna delle condizioni si è verificata.".

    Ma se invece il codice è questo (cioè con le condizioni verificate):
    codice:
    Do While NOT rs.EOF
    
    Anno = rs("Anno")
    Mese = rs("Mese")
    
    DataOggi = "20/10/2005"
    DataIeri = "19/10/2005"
    
    if DataOggi <> DataIeri then
                 response.write "Condizione Data"
    
    if rs("Anno") <> 3000 then
                 
                 Response.Write rs("Anno") &"
    "
                 Response.Write "condizione Anno
    "
    else
                 Response.Write rs("Mese") &"
    "
                 Response.Write "condizione mese
    "
    end if
    
    Exit do 
           end if           
       
           rs.MoveNext
           Loop 
    
    response.write "Nessuna delle condizioni si è verificata."
    
    rs.close 
    Set rs = Nothing 
    Conn.Close 
    Set Conn = Nothing
    Il codice restituisce:
    Condizione Data
    condizione Anno
    Nessuna delle condizioni si è verificata.
    Se almeno una delle due condizioni perchè restituisce anche l'ultimo response.write e non blocca lo script come già detto??? :master:

  7. #7
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    up

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    152
    è normale.

    Esce dal loop appena legge Exit Do.

    Come inverti le condizioni puoi anche spostare l' exit do prima di far scrivere il testo

    Cia'

  9. #9
    Utente di HTML.it L'avatar di Mizushi
    Registrato dal
    Aug 2005
    Messaggi
    1,125
    Se intendi questo:
    codice:
     <%
      Do While NOT rs.EOF
    
    Anno = rs("Anno")
    Mese = rs("Mese")
    
    DataOggi = "20/10/2005"
    DataIeri = "19/10/2005"
    
    if DataOggi <> DataIeri then
                 response.write "bla bla
    "
    
    if rs("Anno") <> 3000 then
                 
                 Response.Write rs("Anno") &"
    "
    else
                 Response.Write rs("Mese") &"
    "
    end if
    
                   end if   
                         
       
           rs.MoveNext
           Loop 
     Exit do 
    response.write "www"
    
    rs.close 
    Set rs = Nothing 
    
    %>
    Restituisce
    Microsoft VBScript compilation error '800a040f'

    Invalid 'exit' statement

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    152
    exit do

    fa uscire da un ciclo do ... loop è evidente che lo devi usare all'interno del ciclo!

    Cia'

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.