Newsgroup: it.comp.lang.visual-basic
Titolo: sapere quanti giorni ha il mese?

ciao a tutti, esiste una funzione, per sapere di quanti giorni è composto un
mese in particolare??
esempio: emetto una fattura al 20/5/2003 con scadenza 30gg, se faccio il
calcolo con DateAdd
il risultato è 19/6/2003, ma automaticamente vorrei scrivere la scadeenza
della fattura che sarà a fine mese 30/06/2003 (30 e non 31)....
grazie 1000 x l'aiuto e scusate, la banalità della domanda ma sono alle
prime armi....
ciauz
Toskio


Tič...godi :)
Public Function UltimoGiornoDelMese(iMese As Integer, iAnno As Integer)
   If IsDate("31/" & Format(iMese) & "/" & Format(iAnno)) Then
      UltimoGiornoDelMese = 31
   ElseIf IsDate("30/" & Format(iMese) & "/" & Format(iAnno)) Then
      UltimoGiornoDelMese = 30
   ElseIf IsDate("29/" & Format(iMese) & "/" & Format(iAnno)) Then
      UltimoGiornoDelMese = 29
   Else
      UltimoGiornoDelMese = 28
   End If
End Function
Akuma, che dovrebbe essere alla sua prima risposta 'tecnica' :)

 31)....
Mi sento generoso oggi, eccoti una funzione che uso io:
function FineMese(data_partenza, avanza_mesi)
   FineMese = DateSerial(Year(data_partenza), Month(data_partenza) +
avanza_mesi + 1, 0)
end function
Occhio!
Ti spiego come va...
Per prima cosa devi sapere che se dai come giorno 0 ti verra' restituito
l'ultimo giorno del mese, percio' DateSerial(2003, 1, 0) restituira'
31/12/2002
Come puoi notare di base nella mia funzione c'e' un +1 nei mesi, a me
interessa almeno mese attuale e non il precedente.
Una nota...
Se devi andare a 30 giorni, aggiungi 1 mese, non trenta giorni perche se no
la funzione sopra non va :)
Fammi sapere!
Ciao ;^)=
--
RedFoxy
A fox around web
Power at fox for a yiffing world!

 Akuma, che dovrebbe essere alla sua prima risposta 'tecnica' :)
Whoa o.0
Mi spieghi +o- come dovrebbe funzionare? controlla ogni volta qual'e'
l'ultimo giorno del mese?


 ha scritto nel messaggio
news:SAoka.16947$DT4.5...@twister1.libero.it...


 ha scritto nel messaggio
news:b6t5h7$hqq$1...@newsreader.mailgate.org...


minkia..stai peggio di me :))
Io devo gestire una stampa di un form ...
e sto diventando matto ... :)(
Alle tre del mattino :(
E domani alle nove ho la sveglia :)

Giorno = Ultimogiornodelmese(3,2001)
( giorno = risultato :))) )


Funziona solo in Italia però!
Io farei/faccio così:
    Dim UltimoGG As Date
    Dim DataOggi As Date
    DataOggi = Now
    ' Calcolo l'ultimo del mese
    DataOggi = DateSerial(Year(DataOggi), Month(DataOggi), 1)
    DataOggi = DateAdd("m", 1, DataOggi)
    UltimoGG = DateAdd("d", -1, DataOggi)
    Debug.Print Format$(UltimoGG)
Ettore Maronese
il Mes

 mese in particolare??
ultimodelmese=int(dateadd("m",1,now))-int(now)
termoPilucco

 ha scritto nel messaggio
news:b6tulv$90k0m$1...@ID-188026.news.dfncis.de...

Ops.. sostituisci now con la data di cui ti interessa l'ultimo del mese
termoPilucco

 della fattura che sarà a fine mese 30/06/2003 (30 e non 31)....
La cosa più veloce è impostare "31/mm/yyyy"
e controllare con IsDate se è una data valida,
altrimenti sottrarre uno e ricontrollare (così
vale per tutti i mesi compreso febbraio e
per gli anni bisestili).
--
Er Roscio.

 per gli anni bisestili).
Che è esattamente ciò che ha proposto Akuma.
Comunque state accuorti perchè non è detto che funzioni in tutto i PC (vedi
impostazioni internazionali).
Molto meglio la soluzione col dateserial di RedFoxy. Funziona ovunque nello
stesso modo. Ed è sicuramente più performante.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 stesso modo. Ed è sicuramente più performante.
Solo se devi calcolare diecimila date.
Altrimenti, è più performante quella che ti fa spremere di meno le meningi.
--
Er Roscio.

 Naaa... Non se si usano le corrette funzioni di conversione.
uhmmm.. dove ho già sentito questa frase?
--
Salutoni
Sergio

 ha scritto nel messaggio
news:9goka.96508$i26.2...@news2.tin.it...

prendi il primo del mese successivo e gli togli 1 giorno!
se ti serve l'ultimo giorno del mese inficato nell'anno corrente:
Public Function UltimoGiorno(mese As Integer) As Integer
 UltimoGiorno = Day(CDate("01/" & Trim(Str(mese + 1)) & "/" &
Trim(Str(Year(Now)))) - 1)
End Function
se ti serve l'ultimo giorno del mese e anno indicati:
Public Function UltimoGiorno(mese As Integer anno as integer) As Integer
 UltimoGiorno = Day(CDate("01/" & Trim(Str(mese + 1)) & "/" &
Trim(Str(anno))) - 1)
End Function
--
Mauro Cerreto
www.cerretosoft.it