51 messaggi dal 02 novembre 2006
salve a tutti, ho la necessità che una variabile assuma un determinato valore in funzione della data corrente, per il menù del sito di pallavolo che seguo.

questo è il codice che ho utilizzato

Dim Var

'condizione: se la data odierna è compresa tra il 1° gennaio ed il 15 settembre l'anno iniziale della stagione corrente sarà anno_corrente -1 // anno_corrente xchè iniziato l'anno prima.

if Date() >= "01/01/"&year(date()) Then

elseif Date() < "15/09/"&year(date()) Then

Var = year(date())-1 &"-"&year(date())

'Se la data odierna è tra il 15/09 ed il 31/12, l'anno iniziale della stagione sportiva corrente sarà anno_corrente // anno_corrente +1

else

Var = year(date()) &"-"&year(date())+1

end if

Purtroppo non funziona come vorrei
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

angelorso ha scritto:

if Date() >= "01/01/"&year(date()) Then

sarebbe meglio non comparare le date con una stringa. Usa la funzione DateSerial per ottenere una data conoscendone l'anno, il mese e il giorno.

Prova con questo codice
Dim oggi, annoInizio, var
oggi = Date()
'valorizzo questa variabile con l'anno corrente
annoInizio = Year(oggi)
'qui uso DateSerial per capire se la data di oggi è minore del 15 settembre e, se lo è, allora decremento l'anno
if oggi < DateSerial(Year(oggi), 9, 15) then annoInizio = annoInizio-1
'infine compongo la stringa della stagione
var = annoInizio & "-" & (annoInizio+1)
'e la visualizzo nella pagina
Response.Write(var)


ciao,
Modificato da BrightSoul il 16 novembre 2011 23.53 -

Enjoy learning and just keep making
51 messaggi dal 02 novembre 2006
Ciao, ti ringrazio per la dritta, resta la non risoluzione del problema apicale.

Vediamo l'esempio.

Stagione sportiva 2011-2012.

Attingo al dato da una tabella "Stagione" MdB Access ove ho una serie di records; i campi in oggetto sono "stagione" cge aasume i valori

2009-2010
2010-2011
2011-2012

oltre al campo Contatore

Il costrutto è:

anno corrente (2011) 2011-2012

Anno successivo (2012) 2011-2012

Anche con il tuo sistema è OK se siamo nel 2011.

Ma come si può ovviare se siamo nel 2012?

darebbe 2012-2013

Tieni presente che la stagione inizia a settembre e termina a giugno dell'anno successivo, ma noin è detto che si inserisca immediatamente la successiva

Credo di aver risolto inserendo un ulteriore campo di controllo che ho chiamato "Ctrl" nei records della tabella "stagione", che "flaggato" assume il valore 0 o 1 e che tramite query dovrebbe darmi il risultato desiderato
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

angelorso ha scritto:

Anche con il tuo sistema è OK se siamo nel 2011.
Ma come si può ovviare se siamo nel 2012?


Si può risolvere inserendo quel codice in una funzione e lasciando che la data venga passata come parametro della funzione stessa.

<%
Function OttieniStagione(data)
Dim annoInizio
annoInizio = Year(data)
if data < DateSerial(Year(data), 9, 15) then annoInizio = annoInizio-1
OttieniStagione = annoInizio & "-" & (annoInizio+1)
End Function
%>


Questi sono degli esempi di utilizzo della funzione
Stampa la stagione della data odierna:
<%= OttieniStagione(Date()) %><br />
Stampa la stagione di una data presa dal database:
<%= OttieniStagione(rs("campodata")) %><br />
Stampa la stagione di una data qualsiasi (10 luglio 2010):
<%= OttieniStagione(DateSerial(2010, 07, 10)) %><br />


ciao,

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.