Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Date a cadenza mensile

61 views
Skip to first unread message

Marco

unread,
Nov 23, 2022, 2:08:14 PM11/23/22
to
Salve, avrei bisogno di creare uno scadenziario le cui date sono crescenti per mese, in modo automatico.
Per esempio
01/11/2022
01/12/2022
01/01/2023
01/02/2023 ... a prescindere dai 30 o dai 31 giorni
La routine Do... Loop che aggiunge i record delle scadenze è già funzionante
Mi manca solo di gestire il formato data in modo da essere crescente per mese.

per esempio:
Do
rsPagamenti.AddNew
rsPagamenti!Data = MiaData + mese crescente ' è ciò che mi manca
rsPagamenti!Rata = Me.ImportoRata
rsPagamenti.Update
Loop Until ...(fino al numero di rate stabilito)

Potreste darmi qualche indicazione?

Michele

unread,
Nov 23, 2022, 5:48:58 PM11/23/22
to
meseZero = DatePart("m", MiaData)
annoZero = DatePart("yyyy", MiaData)
n = 0
do
meseN = (meseZero + n +1) mod 12
if meseN = 0 then meseN = 12
annoN = int( (meseZero + n ) /12 ) + annoZero
rsPagamenti!Data = dateserial(annoN, meseN, 1)
n = n+1
loop until n < numRate

Graziano

unread,
Nov 23, 2022, 9:58:56 PM11/23/22
to
Il giorno mercoledì 23 novembre 2022 alle 20:08:14 UTC+1 Marco ha scritto:
Il primo del MESE
rsPagamenti!Data= DateAdd("m", 1, MiaData) - DatePart("d", DateAdd("m", 1, MiaData)) + 1

Saluti
FG

Bruno Rossi

unread,
Nov 23, 2022, 10:56:29 PM11/23/22
to
Private Sub ImpostaRate()
Dim intCiclo As Integer
Dim intRate As Integer
Dim datPrimaRata As Date
Dim datCicloRata As Date
datPrimaRata = CDate("01/03/2022")
intRate = 6
For intCiclo = 1 To intRate
If intCiclo = 1 Then
datCicloRata = datPrimaRata
Else
datCicloRata = CDate("1/" & Format(DateAdd("m", 1, datCicloRata), "mm/yyyy"))
End If
Debug.Print datCicloRata
Next
End Sub

Marco

unread,
Nov 24, 2022, 3:33:43 AM11/24/22
to
Ciao
scusami, ma togliendo la seconda parte dell'espressione ' - DatePart("d", DateAdd("m", 1, MiaData)) + 1
il risultato non cambia. Aumenta comunque di un mese. A che serve la seconda parte.
Grazie cmq, perchè funziona!

Marco

unread,
Nov 24, 2022, 3:39:40 AM11/24/22
to
GRAZIE a tutti. Conservo tutti gli esempi forniti. Grazie ancora.

maynard00

unread,
Nov 24, 2022, 4:40:25 AM11/24/22
to
in passato quando ho fatto dei calcoli con le date con altri linguaggi ho notato che dateadd faceva un po' di casini.
ad esempio quando aggiungevo varie migliaia di giorni a una data, non considerava gli anni bisestili.
quindi quando voglio essere sicuro al 100% lo evito.
a voi non ha dato mai problemi?

@Alex

unread,
Nov 24, 2022, 6:28:28 AM11/24/22
to
Personalmente non ho mai avuto alcun problema usando il DateAdd anche in cicli pesanti di generazione di GANTT e Calendari.
Se puoi fare un esempio proviamo a replicarlo, il DateAdd è indicato proprio per evitare quello che hai "ipoitizzato".
Quindi personalmente prima di prendere la tua considerazione per corretta o plausibile devo testarla su esempi concreti.

@Alex

Bruno Campanini

unread,
Nov 24, 2022, 7:58:35 AM11/24/22
to
Marco expressed precisely :
Prova questa:
===========================================
Public Sub Mensilità()
Dim i As Integer
For i = 1 To 30
MsgBox DateAdd("m", i, "01/11/2022")
Next
End Sub
==========================================

Bruno

maynard00

unread,
Nov 24, 2022, 8:22:21 AM11/24/22
to
sto parlando di almeno 10 anni fa e di php.. mi fido della tua esperienza se mi dici che funziona bene

Bruno Campanini

unread,
Nov 24, 2022, 9:17:04 AM11/24/22
to
maynard00 formulated the question :
Funziona bene... funziona bene!
C'era già nell'Access Basic della versione 1.0 dello 07/01/93.

Bruno
0 new messages