Newsgroup: it.comp.lang.visual-basic
Titolo: funzione su data in interval senza controllo annno

Esiste una una funzione nella classe date or timespan che mi permette
se un mese e un giorno (senza badare all'anno) e' present e in un
intervallo? (in realta per 2 date)
ad es nel interv nov06 mar07 la data 20dic e' presente.
in gen06 giu06 20 apr è presente
in mar06 gen07 sono presenti sia 20apr che 20 dic ma di anni diversi.
Io per adesso ho solo fatto un loop, ma creod ci sia qulcsa di meglio
Grazie

 Io per adesso ho solo fatto un loop, ma creod ci sia qulcsa di meglio
Puoi controllare la DateSerial(year, month, day) passandogli lo stesso anno
fittizzio.
CONST CMP_ANNO as Integer=2000
MyDate='tua data da controllare
MyDateCompare=DateSerial(CMP_ANNO, Month(MyDate), Day(MyDate))
MinDate = DateSerial(CMP_ANNO, 2, 12)
MaxDate2 = DateSerial(CMP_ANNO, 6, 25)
if MyDateCompare>=MinDate and MyDateCompare<=MaxDate2 then
	compresa
else
	fuori
endif
Metti tutto in una funzione e via.
Magari ci sono anche cose migliori comunque....
-- 
DBMS Firebird
VB6 + Ado

Grazie mille aveo gia provato questo, ma il problema nasce dal fatto
che l'anno puo variare!
Il problema ridotto ai minimi termini e'
nelle 20 settimane prima di oggi c'c' stato un 20 marzo o un 20 sett?
se sono in nov il 20 sett e' dello s tesso anno ma se sono in gennaio
e' dell'anno precedente!
Spero di essere stao chiaro
grazie millee
Andrea [Work] ha scritto:


 Spero di essere stao chiaro
Prova con la DateAdd, DateDiff ecc.
Altrimenti spiega un po' meglio il problema pratico, forse si può risolvere
in altro modo.
Dim FirstDate As Date      ' Dichiara le variabili.
Dim IntervalType As String
Dim Number As Integer
Dim Msg
IntervalType = "m"         ' "m" specifica i mesi come intervallo.
FirstDate = InputBox("Digitare una data")
Number = InputBox("Digitare il numero di mesi da aggiungere")
Msg = "Nuova data: " & DateAdd(IntervalType, Number, FirstDate)
MsgBox Msg


grazie millee
credo di aver capito, e ho cercato di rendermi utile. ti posto un po' di 
codice:
'--------------- alcuni commenti ----------
Avendo A data maggiore e B data minore calcolata come "20 settimane prima" 
(circa 140 gg)
come nel tuo post.
C la data da controllare
Dim a As Date, b As Date, c As Date, annoC As Integer
a = Date                    'imposto a come oggi
b = DateSerial(Year(a), Month(a), Day(a) - 140)    'b come 20 settimane 
prima di a
c = "20/09/" & Year(a)        'per default do a C il giorno e il mese che 
deve controllare e l'anno di A
If Year(a) > Year(b) Then        'controllo se l'anno di A è maggiore di 
quello di B (se siamo nell'anno nuovo)
    If Month(c) > Month(a) Then        'Se è cambiato anno controllo se il 
mese che devo cercare ( C ) è maggiore del mese della data maggiore
        annoC = Year(b)                    'Se si allora vuol dire che la 
data da cercare ( C ) ha come anno qullo precedente
    Else
        annoC = Year(a)                    'Se no vuol dire che la data da 
cercare ha come hanno qullo di attuale ( A )
    End If
End If
c = CDate(Day(c) & "/" & Month(c) & "/" & annoC)  'imposto C come giorno e 
mese da cerca e anno calcolato dall' IF precedente
If c < a And c > b Then        'semplice if di controllo C compresa tra a e 
b
    'DATA COMPRESA
Else
    'DATA NON COMPRESA
End If
spero di aver azzeccato... l'ho fatto velocemente ma spero di essere utile a 
qualcosa
ciao 

Grazie fabio, perfetto.  c'era solo un secondo else da mettere prima
dell ultimo end if altrimenti se l anno era uguale annoc era uguale a
zero. In pratica prima della chiusura dell ultimo if ho aggiunto else
annoc=a.year
Grazie mille
{ } Fabio { } ha scritto:


giusto...
errorini di logica :-)