Errore inesistente su una funzione

di il
3 risposte

Errore inesistente su una funzione

Ciao a tutti.

Oggi ho aggiunto una funzione di calcolo scadenze ad un mio DB. L'aggiunta è stata semplicemente una casella di testo in una maschera; quando viene richiamato un record, esegue la funzione (che riporto sotto) in cui viene richiesta la data di inizio (nel caso specifico, quella odierna) e la data di fine (che viene calcolato con un DateAdd riprendendo un valore da una tabella)

Function CalcolaScadenza(dDateOfBirth As Date, dDateReference As Date) As String
 
Dim iDays As Integer
Dim iMonths As Integer
Dim iYears As Integer
Dim iDaysInMonth As Integer
'Dim dDateOfBirth As Date
'Dim dDateReference As Date

iDaysInMonth = DateSerial(Year(dDateOfBirth), Month(dDateOfBirth) + 1, 1) - DateSerial(Year(dDateOfBirth), Month(dDateOfBirth), 1)

iYears = DatePart("yyyy", dDateReference) - DatePart("yyyy", dDateOfBirth)
iMonths = DatePart("m", dDateReference) - DatePart("m", dDateOfBirth)
iDays = DatePart("d", dDateReference) - DatePart("d", dDateOfBirth)
If iDays < 0 Then
    iMonths = iMonths - 1
    iDays = iDaysInMonth + iDays
End If
If iMonths < 0 Then
    iYears = iYears - 1
    iMonths = 12 + iMonths
End If

Debug.Print iYears
Debug.Print iMonths
Debug.Print iDays

CalcolaScadenza = iYears & " anni  " & iMonths & " mesi  " & iDays & " giorni"

End Function

La funzione l'avevo trovata in rete tempo fa (la uso anche in altri DB senza problemi)

dDateOfBirth = data odierna

dDateReference = calcolata con un DateAdd("yyyy", valore-preso-da-una-tabella, Data di riferimento)

Il problema quale è?

Se lancio il DB e richiamo un record, mi va in debug (senza nessun messaggio di errore) evidenziandomi la riga

iDaysInMonth = DateSerial(Year(dDateOfBirth), Month(dDateOfBirth) + 1, 1) - DateSerial(Year(dDateOfBirth), Month(dDateOfBirth), 1)

Se premo F8 fino alla fine della funzione, nella casella di testo mi viene visualizzato regolarmente il risultato della funzione.

Se quindi richiamo un altro record, tutto fila liscio senza interruzioni.

In pratica mi succede ad ogni aperturta del DB e al primo record richiamato, ma dal secondo in poi non succede nulla.

Opinioni?

Grazie

Andrea

3 Risposte

  • Re: Errore inesistente su una funzione

    Ciao,

    a quanto pare sembra che sia un breakpoints persistente, l'editor si ricorda che in quella riga vi era un punto di interruzione di debug.
    Poi ovviamente tu lo mandi avanti e a quel punto non si ferma più per le successive chiamate.

    Era una anomalia presente in access... ma ero piccolo all'epoca ;-)  strano che possa ancora presentarsi tale problema.

    Se fosse questo il problema potresti semplicemente risolverlo in questo modo:

    1. Andare sull'editor vba e dal menù "Debug" selezioanare "Rimuovi punti di interruzione"
    2. Andare sull'editor vba e dal menù "Debug" selezioanare "Compila"
    3. Salva e chiudi il progetto con l'ozione attiva di "Compatta e ripristina il database"
    4. Verifica se nella cartella del progetto esiste ancora il file di blocco con estensione .laccdb e nel caso lo elimini manualmente
    5. Riapri il progetto e prova a riprovare   ;-)
  • Re: Errore inesistente su una funzione

    E' un baco già conosciuto... purtroppo non funziona il suggerimento di Franco del "Rimuovi punti di interruzione", io semplicemente faccio un Taglia del codice, complia re-incolla e ri-compila e dovrebbe sparire.

  • Re: Errore inesistente su una funzione

    04/04/2025 - @Alex ha scritto:

    E' un baco già conosciuto... purtroppo non funziona il suggerimento di Franco del "Rimuovi punti di interruzione"

    Vedi che qualcosa, nonostante l'età, vagamente ricordavo ?  ;-))

    Grande @Alex !!!

Devi accedere o registrarti per scrivere nel forum
3 risposte