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.
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.