Ciclo while

dream_

Nuovo Utente
11 Ott 2008
8
0
0
Ciao,
ho un problema con un ciclo while (di seguito il codice).
annoIniziale = Request.Form("ANNOINIZIALE")
meseIniziale = Request.Form("MESEINIZIALE")
annoFinale = Request.Form("ANNOFINALE")
meseFinale = Request.Form("MESEFINALE")

annoInizialeBCKCNG = annoIniziale
meseInizialeBCKCNG = meseIniziale
annoFinaleBCKCNG = annoFinale
meseFinaleBCKCNG = meseFinale

Response.Write "Anno Iniziale: "& annoIniziale%><br><%
Response.Write "Mese Iniziale: "& meseIniziale%><br><%
Response.Write "Anno Finale: "& annoFinale%><br><%
Response.Write "Mese Finale: "& meseFinale%><br><%

Response.Write "Anno InizialeBCK: "& annoInizialeBCKCNG%><br><%
Response.Write "Mese InizialeBCK: "& meseInizialeBCKCNG%><br><%
Response.Write "Anno FinaleBCK: "& annoFinaleBCKCNG%><br><%
Response.Write "Mese FinaleBCK: "& meseFinaleBCKCNG%><br><%

' Con il while si controllano quali mesi prendere da conguaglio e quali da produzione
do While (((annoFinaleBCKCNG > annoIniziale) _
OR (annoFinaleBCKCNG = annoIniziale AND meseFinaleBCKCNG >= meseIniziale ))_
AND trovato = false _
)

set obj = createobject("BilDefinitvoPrj.cBilancioDefinitivo")
risultato = obj.verificaCNG(annoFinaleBCKCNG,meseFinaleBCKCNG,Application("CNG_DB"))
set obj=nothing

Response.Write "Risultato: "& risultato%><br><%

if risultato = "ok" then 'I dati per tale mese sono in conguaglio.
'Si esce dal ciclo
annoInizialeCNG = CInt(annoIniziale)
meseInizialeCNG = CInt(meseIniziale)
annoFinaleCNG = CInt(annoFinaleBCKCNG)
meseFinaleCNG = CInt(meseFinaleBCKCNG)

trovato = true

Response.Write "Trovato!!! Anno finale CNG: "& annoFinaleCNG & ", Mese finale CNG: " & meseFinaleCNG

elseif risultato = "ko" then'I dati per tale mese NON sono in conguaglio;

Response.Write "Test fallito con: Anno finale CNG: "& annoFinaleBCKCNG & ", Mese finale CNG: " & meseFinaleBCKCNG %><br> <%
annoInizialePROD = CInt(annoFinaleBCKCNG)
meseInizialePROD = CInt(meseFinaleBCKCNG)
annoFinalePROD = CInt(annoFinale)
meseFinalePROD = CInt(meseFinale)

if CInt(meseFinaleBCKCNG) > 1 then
meseFinaleBCKCNG = CInt(meseFinaleBCKCNG) - 1
else
meseFinaleBCKCNG = 12
annoFinaleBCKCNG = CInt(annoFinaleBCKCNG) - 1
end if
Response.Write "Post decremento: Anno finale CNG: "& annoFinaleBCKCNG & ", Mese finale CNG: " & meseFinaleBCKCNG %><br> <%
Response.Write "Post decremento: Anno iniziale: "& annoIniziale & ", Mese iniziale: " & meseIniziale %><br> <%
Response.Write "Post decremento: Trovato: "& trovato%><br> <%
end if

Loop 'Fine ciclo di controllo

if trovato = true then
Response.Write " trovato !!!" %><br> <%
Response.Write "Test con: Anno Iniziale CNG: "& annoInizialeCNG & ", Mese iniziale CNG: " & meseInizialeCNG & " Anno Finale CNG: "& annoFinaleCNG & ", Mese finale CNG: " & meseFinaleCNG %><br> <%
Response.Write "Test con: Anno Iniziale PROD: "& annoInizialePROD & ", Mese iniziale PROD: " & meseInizialePROD & " Anno Finale PROD: "& annoFinalePROD & ", Mese finale PROD: " & meseFinalePROD %><br> <%
'set obj = createobject("BilDefinitvoPrj.cBilancioDefinitivo")
'esito= obj.BilancioDef(annoInizialePROD,meseInizialePROD,annoFinalePROD,meseFinalePROD,annoInizialeCNG,meseInizialeCNG,annoFinaleCNG,meseFinaleCNG,Application("GMS_DB"),Application("CNG_DB"))
'set obj=nothing
else
Response.Write " trovato: " & trovato %><br> <%
Response.Write "Non ho trovato nulla!!!"
end if
end if


L'output è il seguente:
Anno Iniziale: 2008
Mese Iniziale: 3
Anno Finale: 2008
Mese Finale: 9
Anno InizialeBCK: 2008
Mese InizialeBCK: 3
Anno FinaleBCK: 2008
Mese FinaleBCK: 9
Risultato: ko
Test fallito con: Anno finale CNG: 2008, Mese finale CNG: 9
Post decremento: Anno finale CNG: 2008, Mese finale CNG: 8
Post decremento: Anno iniziale: 2008, Mese iniziale: 3
Post decremento: Trovato: False
trovato: False
Non ho trovato nulla!!!


Vorrei che si uscisse dal ciclo o quando l'Anno finale è maggiore dell'anno Iniziale o quando i due anni (iniziale e finale) sono uguali, ma il mese iniziale è maggiore del finale o quando la variabile "trovato" è "true".

Come si vede dall'output anche se i valori soddisfano il ciclo while, il ciclo termina lo stesso dopo la prima iterazione.
Mi aiutate?
Grazie.
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Con VBScript confesso di non aver mai provato; con Visual Basic esistono i comandi Exit Do, Exit While, Exit For.

Prova a fare uana cosa del genere (del tutto teorico il mio esempio):

While condizione
...
...
...
If controllo Then Exit While
Wend
 

dream_

Nuovo Utente
11 Ott 2008
8
0
0
il mio problema è l'inverso: esce dal ciclo quando non dovrebbe!
In ogni caso inserendo Exit While mi dà l'errore: Invalid 'exit' statement
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Ok, ricordavo bene/male in merito ad Exit e non avevo capito una mazza della domanda :)

Immagino sia un errore logico: puoi spiegarmi esattamente cosa deve fare il ciclo e per effetto di che condizione deve uscire?
 

dream_

Nuovo Utente
11 Ott 2008
8
0
0
Devo uscire dal loop se:

1) annoFinaleBCKCNG < annoIniziale oppure annoFinaleBCKCNG = annoIniziale e meseFinaleBCKCNG < meseIniziale
2)Se trovato= true

Di seguito riporto la condizione: resta nel while se:


Do While ( _
( _
(annoFinaleBCKCNG > annoIniziale) OR _
(annoFinaleBCKCNG = annoIniziale AND meseFinaleBCKCNG >= meseIniziale )_
)_
AND trovato = false _
)
 

dream_

Nuovo Utente
11 Ott 2008
8
0
0
Appunto: il codice mi dice quando devo restarci. La mia spiegazione dice quando devo uscire!!!! Perciò sono l'opposto!!!
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Prova a fare una cosa: togli il filto condizionale > o < dal while ed all'interno del ciclo imposta la condizione > o < che ti serve, tipo:

If a > b Then esci = 1

Poi, filtra tutte le operazioni che devi fare:

If esci = 0 Then
...
...
...
End If

Fammi sapere.
 

dream_

Nuovo Utente
11 Ott 2008
8
0
0
Risolto. Ci volevano i Cint e Cbool per i parametri nella condizione del while!
 
Discussioni simili
Autore Titolo Forum Risposte Data
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
M [PHP] Come inserire codice html in un ciclo while PHP 2
N [PHP] Controllare condizione ciclo While PHP 9
MattiaBL [PHP] Problema ciclo while PHP 3
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
F Problema codice in un ciclo while PHP 2
V Generare array da ciclo while e prendere valori casuali PHP 4
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
N Stranezza sul ciclo while PHP 1
P Conteggio con ciclo while PHP 1
D Problemi di stampa primo record ciclo WHILE PHP 2
M Assegnare classi diverse a div in un ciclo while PHP 3
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
gandalf1959 [risolto] UPDATE di una tabella all'interno di un ciclo while PHP 12
L gestire array per radio-checkbox in ciclo while PHP 2
A estrarre il ciclo while in una sessione e spedire l'array in un db PHP 2
M disabled di alcune voci di un menù a tendina prese da un ciclo while PHP 6
P Ciclo while PHP 2
M Problema con ciclo for e while PHP 2
M Perchè alla fine di un ciclo while si interrompe l'esecuzione? PHP 1
M Selezionare un campo alla volta su un ciclo while PHP 47
W ritardo in ciclo while Javascript 0
N Sommare iterazioni ciclo while PHP 5
S ciclo while Classic ASP 1
C ciclo do while PHP 8
M Problema ciclo while con mysql_fetch_assoc PHP 6
M Ciclo foreach dentro un ciclo while PHP 5
E variabili di sessione con ciclo while PHP 20
N Ciclo while PHP 3
K Ciclo while ed un solo form PHP 1
A ciclo while per aggiungere email estratte dalla tab1 alla tab2 di un db PHP 4
F Fermare un ciclo while con un bottone o da solo Flash 0
L Ciclo while al contrario PHP 4
D problema con il ciclo while PHP 2
minatore ciclo while PHP 0
P Stampare array senza usare ciclo while PHP 1
M Problema con join e ciclo while PHP 0
S Problema Doppio Ciclo: For & While PHP 0
M Selezione multipla checkbox in un ciclo do while PHP 1
B Completare il seguente ciclo affinché stampi tutto l’array al contrario PHP 3
W MySQL ciclo in SELECT MySQL 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
motleyrulez Aiuto con un ciclo PHP 0
B [PHP] formula e ciclo PHP 5

Discussioni simili