Data scadenza ricorsi

di
Anonimizzato15296
il
21 risposte

21 Risposte - Pagina 2

  • Re: Data scadenza ricorsi

    Questo è il codice della maschera - FUNZIONA BENISSIMO


    Public Sub CalcolaScadenze()
    Dim Data1 As Date
    Dim Data2 As Date
    Dim Data3 As Date
    Dim DataStop1 As Date 'inizio periodo vietato
    Dim DataStop2 As Date 'fine periodo vietato

    label1 = Null 'anzichè label1.Caption = vbNullString
    label2 = Null 'anzichè label1.Caption = vbNullString
    label3 = Null 'anzichè label1.Caption = vbNullString
    Label4 = Null 'anzichè label1.Caption = vbNullString

    ' ho tolto tutti i " .value"
    Data1 = txtData1 'Phil - prende il valore da una casella di testo

    txtscadenza1 = 60
    txtscadenza2 = 180

    'Phil - ora si adatta a tutti gli anni
    DataStop1 = DateSerial(Year(Data1), 8, 1)
    DataStop2 = DateSerial(Year(Data1), 9, 15)

    ' calcolo normale delle scadenze
    Data2 = DateAdd("d", txtscadenza1, Data1)
    Data3 = DateAdd("d", txtscadenza2, Data1)

    label1 = Data2
    label2 = Data3

    ' calcolo le scadenze in funzione del periodo vietato
    If (Data2 >= DataStop1 And Data2 <= DataStop2) Or _
    (Data1 < DataStop1 And Data2 > DataStop2) Then 'Nota1
    Data2 = DateAdd("d", DateAdd("d", 1, DateDiff("d", DataStop1, DataStop2)), Data2)
    ElseIf Data1 >= DataStop1 And Data1 <= DataStop2 Then 'Nota2
    Data2 = DateAdd("d", txtscadenza1.Value, DataStop2)
    End If

    label3 = Data2
    'End If

    If Data3 > DataStop1 And Data3 < DataStop2 Then
    Data3 = DateAdd("d", DateDiff("d", DataStop1, DataStop2), Data3)
    Label4 = Data3
    End If

    End Sub

    Private Sub txtData1_Exit(Cancel As Integer)
    Call CalcolaScadenze
    End Sub

    Grazie continua l'implementazione per i 6 mesi.
  • Re: Data scadenza ricorsi

    nibbio ha scritto:


    Questo è il codice della maschera - FUNZIONA BENISSIMO
    Lo so, l'ho fatto io. Nel senso che prima di pubblicarlo l'ho verificato con alcune date "strategiche", le più problematiche.

    nibbio ha scritto:


    Grazie continua l'implementazione per i 6 mesi.
    Lo faccio sicuramente ma... viste tutte le spiegazioni (credo) dettagliate e uno dei principi del regolamento... non mi offendo se qualcun altro riesce a "finirlo". (devo andare a ripescare la circolare che spiega il calcolo dei giorni quando è stato ridotto il termine lungo da 1 anno a 6 mesi, per essere sicuro di come impostare il lavoro, tra l'altro)
    PS: metti il codice tra i tag CODE.
  • Re: Data scadenza ricorsi


    qui trovi tutte le informazioni relative alla norma
    http://www.altalex.com/index.php?idnot=4693
    ciao e grazie ancora
  • Re: Data scadenza ricorsi

    Carissimi amici in access, grazie a voi ho imparato altre cose e sono riuscito ad implementare il conteggio a 6 mesi. Adesso funziona perfettamente.
    Ecco il codice:
    Public Sub CalcolaScadenze()
        Dim Data1 As Date
        Dim Data2 As Date
        Dim Data3 As Date
        Dim DataStop1 As Date 'inizio periodo vietato
        Dim DataStop2 As Date 'fine periodo vietato
    
        label1 = Null
        label2 = Null
        label3 = Null
        Label4 = Null
    
        Data1 = txtData1 'Phil - prende il valore da una casella di testo
    
        txtscadenza1 = 60
        txtscadenza2 = 6
        
        'Phil - ora si adatta a tutti gli anni
        DataStop1 = DateSerial(year(Data1), 8, 1) 'agosto, 1
        DataStop2 = DateSerial(year(Data1), 9, 15) 'settembre, 15
    
        ' calcolo normale delle scadenze
        Data2 = DateAdd("d", txtscadenza1, Data1)
        Data3 = DateAdd("m", txtscadenza2, Data1)
    
        label1 = Data2
        label2 = Data3
    
        ' calcolo le scadenze in funzione del periodo vietato
        If (Data2 >= DataStop1 And Data2 <= DataStop2) Or _
           (Data1 < DataStop1 And Data2 > DataStop2) Then
           Data2 = DateAdd("d", DateAdd("d", 1, DateDiff("d", DataStop1, DataStop2)), Data2)
        ElseIf Data1 >= DataStop1 And Data1 <= DataStop2 Then
        Data2 = DateAdd("d", txtscadenza1, DataStop2)
        End If
       
            label3 = Data2
           
           If (Data3 >= DataStop1 And Data3 <= DataStop2) Or _
           (Data1 < DataStop1 And Data3 > DataStop2) Then 'Nota1
           Data3 = DateAdd("d", DateAdd("d", 1, DateDiff("d", DataStop1, DataStop2)), Data3)
        ElseIf Data1 >= DataStop1 And Data1 <= DataStop2 Then 'Nota2
            Data3 = DateAdd("m", txtscadenza2, DataStop2)
    
        End If
    
            label2 = Data3
    
    End Sub
    
  • Re: Data scadenza ricorsi

    nibbio ha scritto:


    Carissimi amici in access, grazie a voi ho imparato altre cose e sono riuscito ad implementare il conteggio a 6 mesi. Adesso funziona perfettamente....
    Rilancio: individuare automaticamente quali date di scadenza che risultano da quel codice cadono di sabato, domenica o in giorno festivo per prorogarle automaticamente al primo non festivo successivo. In testa ce l'ho, per sabato, domenica e le altre feste "fisse" dovrebbe essere facile. Il problema sta nel Lunedì di Pasqua (Pasqua no, perché è già individuata come domenica). Bisogna inserire la funzione che determina il giorno di Pasqua (e di conseguenza il Lunedì di Pasqua) e che c'è già, pronta, da qualche parte. Chi mette in piedi tutto?
  • Re: Data scadenza ricorsi

    Cattivissimo! ... però ci proverò
  • Re: Data scadenza ricorsi

    nibbio ha scritto:


    Cattivissimo! ... però ci proverò
    Oh... non devi fare tutto tu.
    Ecco un po' di materiale
    Conteggio dei giorni lavorativi tra due date
    Festivi e finesettimana italia
    Giorni lavorativi da una data
    Questi ovviamente per individuare il sabato, la domenica e le "altre feste", non perché ci serva contare i giorni lavorativi.
    Pensavo di inserire la data risultante dalla funzione di cui ai post precedenti in un ciclo di questo tipo
    Do While Festivo(Data2)
    Data2 = DateAdd("d", 1, Data2)
    Loop
    impostando la funzione in modo tale che restituisca il valore booleano True se è festivo e falso se è non festivo, passando alla funzione Date2, tipo
    Function Festivo(Data As Date) As Boolean
    così se è festivo restituisce true, la condizione del ciclo è verificata e aggiunge un giorno e riparte, provando a vedere se anche il "nuovo giorno" appena individuato e nuovamente festivo. Ecco cosa intendevo quando dicevo che "ce l'avevo in testa"
Devi accedere o registrarti per scrivere nel forum
21 risposte