Calcolo in Access della differenza fra Data ultimo dato inserito e data Penultimo dato

di Anonimizzato24453 il
16 risposte
Vorrei che Access mi avvisasse quando è passato più di un anno dalla data di inserimento di un soggetto al fine di verificare se l'indirizzo è ancora valido.
Il codice a cui avevo pensato è il seguente ma non mi da i risultati sperati.

Private Sub DATA_AfterUpdate()
Dim DATA_ULTIMO As Date
Dim DATA_PenUltimo As Date
Dim nDays As Long
On Error GoTo FINE
mycornice = Forms![1038]![ANAGRAFICO]
Strsql = "SELECT * FROM 1038 WHERE([1038].[ANAGRAFICO] = """ & mycornice & """)"
Set Dbs = CurrentDb
Set rst = Dbs.OpenRecordset(Strsql)
Do Until (rst.EOF)

rst.MoveLast
DATA_ULTIMO = rst.[DATA]
rst.MovePrevius
DATA_PenUltimo = rst.[DATA]
If IsNull(DATA_PenUltimo) Then GoTo FINE
nDays = DateDiff("d", DATA_ULTIMO, DATA_PenUltimo)
If rst.[ANAGRAFICO] = Me![ANAGRAFICO] And nDays > 365 Then MsgBox rst.[CONT] & (Chr(13)) & rst.[DATA], vbCritical + vbOKOnly, "Ultimo inserito prima 365 gg Controlla Indirizzo"
Loop
FINE:

End Sub

16 Risposte

  • Prima cosa usa i TAG per il codice, grazie.
    Non trovo corrispondenza tra quello.che chiedi:
    Vorrei che Access mi avvisasse quando è passato più di un anno dalla data di inserimento di un soggetto al fine di verificare se l'indirizzo è ancora valido.
    e quello.che fai... in particolare il penultimo record che senso avrebbe...?
    Cosa intendi per data inserimento... forse registrazione Anagrafica...?
    Chiarisci bene prima i concetti...

    P.S. fare il moveprevious dopo il movelast non è una bella mossa senza una gestione errori... se hai solo 1 record che succede...?
  • fmagna ha scritto:


    Il codice a cui avevo pensato è il seguente ma non mi da i risultati sperati.

    Invece che risultati ti da?
  • Con inserimento intendo inserimento di fatture con ritenute d'acconto. Vorrei che quando inserisco una fattura di un percipiente mi dia un avviso se l'ultima fattura inserita di questo soggetto sia stata inserita più di un anno fà. Il mio problema è che già in fase di inserimento dei dati, utilizzando open recorset, come ultimo dato mi da il dato corrente. Ho provato ad utilizzare previus però mi sa che non funzione bene. Grazie
  • Devi eseguire preventivamente una SELECT per leggere la data dell'ultima fattura PRIMA di avviare l'inserimento.
  • Ok Grazie
  • Private Sub ANAGRAFICO_AfterUpdate()
    Dim Contatore_percipiente As Variant
    Dim Contatore_percipiente1 As Variant
    On Error GoTo FINE

    Strsql = "SELECT * FROM 1038"
    Set Dbs = CurrentDb
    Set rst = Dbs.OpenRecordset(Strsql)
    Do Until (rst.EOF)
    If rst.[ANAGRAFICO] = Me![ANAGRAFICO] Then Contatore_percipiente = Contatore_percipiente + 1
    rst.MoveNext


    Loop

    Contatore_percipiente = Contatore_percipiente - 1

    Strsql = "SELECT * FROM 1038"
    Set Dbs1 = CurrentDb
    Set rst = Dbs1.OpenRecordset(Strsql)
    Do Until (rst.EOF)
    If rst.[ANAGRAFICO] = Me![ANAGRAFICO] Then Contatore_percipiente1 = Contatore_percipiente1 + 1
    If rst.[ANAGRAFICO] = Me![ANAGRAFICO] And Contatore_percipiente1 = Contatore_percipiente Then MY_DATA = rst.[DATA]
    rst.MoveNext
    Loop
    nDays = DateDiff("d", MY_DATA, Now)

    If nDays > 365 Then MsgBox (nDays), vbCritical + vbOKOnly, "Controllare Indirizzo"


    FINE:

    End Sub
  • Adesso sì che è tutto chiaro.
  • Quello che hai fatto a cosa dovrebbe servire...?
    Quello che ti ha suggerito Gibra è un'altra Cosa...

    Prova a spiegare quello che hai fatto è cosa ti aspetti faccia.
  • Buongiorno a tutti. Premetto che non sono un informatico o un programmatore e premetto altresì che ho già letto Un po’ di tutto sul vostro ottimo forum e credo di essere sulla discussione giusta.. brevemente, sono un fisioterapista e ho creato con access un buon database completo dedicato alla raccolta di dati derivanti dalle valutazioni posturali su pazienti. L’ho strutturato in tabella Anagrafica e tabella Anamnesi. Tutto funziona, ma volevo implementarlo con questo. Vorrei che in Anamnesi, al controllo “odierno” (quindi ultimo) il dato relativo alL’ULTIMO peso del paziente venisse sottratto il PENULTIMO dato sempre relativo al peso... in sostanza, vorrei che ad ogni nuovo record/controllo posturale venisse caricato in automatico il penultimo peso per poi sottrarlo all’ultimo peso... non so come fare.. senz’altro devo creare un nuovo campo in Anamnesi, però non so come muovermi.. se qualcuno può darmi una mano sulla scrittura del codice gliene sarei grato! Grazie a tutti!
  • mauri74doc ha scritto:


    ho già letto Un po’ di tutto sul vostro ottimo forum e credo di essere sulla discussione giusta..
    Non hai letto la cosa più importante! Il REGOLAMENTO! Il tuo primo post ha già infranto diverse regole. Meglio che tu vada a leggerlo...
  • Onestamente non ho capito quali infrazioni avrei commesso.. il regolamento l’ho letto, e dimostrami il contrario. Se questa é l’accoglienza che riservate ai neo iscritti......... almeno un “benvenuto”, ehhhh no.. cazziamolo subito! ... ho solo chiesto un aiuto su una discussione già aperta, ma evidentemente ho commesso un “sacrilegio da forum” e comunque sono qui a sprecare il mio tempo a risponderti piuttosto che impegnarlo in cose più interessanti... non so chi tu sia e neppure mi interessa saperlo.. ho commesso un errore a rivolgermi al vs forum/sito. Diciamo che se se dovrò dare un’opinione a chiunque su di voi, me ne guardero bene dal...
  • mauri74doc ha scritto:


    Onestamente non ho capito quali infrazioni avrei commesso.. il regolamento l’ho letto, e dimostrami il contrario.
    Non spetta a me, questo è compito del moderatore (a cui ho già segnalato la cosa) e sarà lui gestire la questione.
    Io ti ho solo fatto presente la cosa.

    Per tutto il resto, NO COMMENT (non ne vale nemmeno la pena)
  • mauri74doc ha scritto:


    Onestamente non ho capito quali infrazioni avrei commesso.. il regolamento l’ho letto, e dimostrami il contrario.
    Forse se avessi proposto il tuo tentativo di soluzione con il codice da te provato... sarebbe stato meno contrario al Punto [8.F] del regolamento che hai letto, noi non forniamo pappa pronta, ma la tua richiesta sembrava in questi termini.
    Per questo se tu avessi proposto il tuo codice ancorchè non funzionante avrebbe sortito un effetto diverso.

    Se vuoi... hai modo di proporre il tuo tentativo, verrai ascoltato... altrimenti serve ammettere che 9 volte su 10 non ci si sbaglia.

    mauri74doc ha scritto:


    Se questa é l’accoglienza che riservate ai neo iscritti......... almeno un “benvenuto”, ehhhh no.. cazziamolo subito! ... ho solo chiesto un aiuto su una discussione già aperta, ma evidentemente ho commesso un “sacrilegio da forum” e comunque sono qui a sprecare il mio tempo a risponderti piuttosto che impegnarlo in cose più interessanti... non so chi tu sia e neppure mi interessa saperlo.. ho commesso un errore a rivolgermi al vs forum/sito. Diciamo che se se dovrò dare un’opinione a chiunque su di voi, me ne guardero bene dal...
    Questi sfoghi non hanno senso... lascio a te ora la palla...
  • Buongiorno. Il regolamento parla chiaro, ma a prescindere non Mi sarei mai permesso di pretendere la “pappa pronta”. Ci mancherebbe. Chiedevo un aiuto o un’indicazione su quale istruzione utilizzare perché, come anticipato, non sono un programmatore! Il mio db è frutto di ore di studio su manuali e tutorial.. comunque chiudiamola qui. Io non ho codice da proporvi. Ho solo il mio db che ho progettato e realizzato con access..
Devi accedere o registrarti per scrivere nel forum
16 risposte