Data scadenza al 31/12 con access 2007

di il
18 risposte

Data scadenza al 31/12 con access 2007

Salve a tutti, come da titolo avrei bisogno di impostare una data di scadenza al 31/12 di ogni anno.
Mi spiego meglio: ho creato un db per la gestione dei soci della nostra scuola di volo e vorrei fare in modo che il db mi riporti, in una maschera che ho già creato e che fa riferimento ad una "query scadenze", se l'iscrizione è ancora valida oppure è scaduta. Al momento mi riporta solo se "ok" o "scaduta" ma non ho trovato il modo di impostare la scadenza al 31/12.
Le formule che uso sono:
Confronto Iscrizione: [data]-[data Iscrizione]
ControlloIscrizione: IIf([Confronto iscrizione]>365;"rinnovare tessera";"OK")

Grazie a tutti per l'attenzione e l'aiuto.
Ciao!

Marco

18 Risposte

  • Re: Data scadenza al 31/12 con access 2007

    Benvenuto nel forum.
    Potresti chiarire i nomi propri degli oggetti: maschere, tabelle, query...?
    Per trovare una espressione che calcoli se la tessera è scaduta, prova a dare una occhiata qui
    https://support.office.microsoft.com/it-it/article/Esempi-di-criteri-di-query-3197228c-8684-4552-ac03-aba746fb29d8?CorrelationId=04f33c7a-4674-455c-8a03-08cd80b400cd&ui=it-IT&rs=it-IT&ad=IT
    purtroppo i campi di tipo Data sono i più rognosi da gestire (abbi pazienza). Ti consiglio, quando le espressioni dovessero essere troppo complesse/incomprensibili, di spezzettare su più campi query per arrivare al tuo risultato finale.

    Mavel01 ha scritto:


    ma non ho trovato il modo di impostare la scadenza al 31/12.
    Non ho capito. Potresti chiarire meglio?
    Se uno si iscrive il 30/11 rischia che la sua tessera vale solo un mese?
  • Re: Data scadenza al 31/12 con access 2007

    Ciao Osvaldo e grazie per la risposta. Vedo di spiegarmi meglio...o almeno ci provo. I valori ok e scaduta sono il risultato di una query. In questa query ho impostato delle colonne con delle formule, quelle del primo post. Da questa query ho creato una maschera "controllo posizione soci" dove sono riportati non tutti i campi della query ma solo quelli relativi alle scadenze.

    Se uno si iscrive il 30/11 rischia che la sua tessera vale solo un mese?
    Bè, sarebbe così, ma non accetteremmo mai una cosa del genere. Gli abboneremmo un mese o gli diremmo di iscriversi a gennaio... Se insiste pagherebbe solo 1/12... ma la tessera scadrebbe comunque il 31/12.

    Spero di essere stato un pò più chiaro...

    Ciao.

    Marco
  • Re: Data scadenza al 31/12 con access 2007

    Perdonami. Avevo interpretato male all'inizio e, se noti, ho modificato il mio messaggio.
    Mi resta sempre il dubbio del caso del 30/11. Non ho capito.
  • Re: Data scadenza al 31/12 con access 2007

    Ci mancherebbe! A questo punto mi viene da pensare che potri mettere:

    Confronto Iscrizione: [data]
    ControlloIscrizione: IIf([Confronto iscrizione]..??..;"rinnovare tessera";"OK")

    I punti interrogativi sono la condizione (al 31/12) che non so come impostare...
  • Re: Data scadenza al 31/12 con access 2007

    Ma allora non ho capito quale è il problema. Non ti funzionano le espressioni che tu hai elaborato?
    Che vuol dire questa storia del 31/12?
    Puoi fare 2-3 esempi concreti e dirmi chi è OK e chi scaduto?
  • Re: Data scadenza al 31/12 con access 2007

    Per esempio:
    Mario Rossi, iscritto il 02/01/2014
    Carlo Bianchi, iscritto il 14/03/2014
    Marco Neri, iscritto il 24/05/2014

    Per tutti la scadenza è il 31/12/2014 e vorrei che nella maschera "controllo posizione soci" al 01/01/2015 la posizione di tutti i soci fosse visualizzata come "rinnovare tessera", mentre fino al 31/12/2014 la loro posizione fosse visualizzata come "ok".

    Ovviamente tutti quelli che si iscrivono nel 2015 saranno "ok" fino al 31/12/2015.

    Marco
  • Re: Data scadenza al 31/12 con access 2007

    Quindi mi confermi che chi si iscrive (ma non gli conviene) il 30/11, gli vale solo un mese.
    Io mi giocherei soltanto il controllo su Anno. Sfrutta la funzione
    Year([NomeCampoData])
    per sapere l'anno di iscrizione
    Year(Date())
    per sapere l'anno in corso (l'espressione Date() significa data odierna)
    dopo di che confronti questi 2 semplici valori.
  • Re: Data scadenza al 31/12 con access 2007

    OsvaldoLaviosa ha scritto:


    Quindi mi confermi che chi si iscrive (ma non gli conviene) il 30/11, gli vale solo un mese.
    Si confermo...confermo anche che non gli conviene...

    OsvaldoLaviosa ha scritto:


    dopo di che confronti questi 2 semplici valori.
    ehm...per il confronto c'è una formuletta suppongo...se non ti fosse di troppo disturbo ti chiederei di suggerirmela...purtroppo le mie conoscenze non arrivano troppo il là...

    Grazie.

    Marco
  • Re: Data scadenza al 31/12 con access 2007

    Ragiono per piccoli passi. Nella query prevedi di occupare 3 colonne con le seguenti espressioni:
    AnnoTessera: Year([data iscrizione])
    AnnoCorrente: Year(Date())
    ControlloIscrizione: IIf([AnnoTessera]=[AnnoCorrente];"OK";"rinnovare tessera")
  • Re: Data scadenza al 31/12 con access 2007

    Grande Osvaldo!!!

    Sembra funzionare bene, provo a fare qualche prova con le date per verificare.

    Per adesso ti saluto e ti ringrazio infinitamente. Buona serata!

    Alla prossima!

    marco
  • Re: Data scadenza al 31/12 con access 2007

    Marvel01 ha scritto:


    Grande Osvaldo!!!
    Sembra funzionare bene, provo a fare qualche prova con le date per verificare.
    Non so, magari mi è sfuggito qualcosa ma da quello che ho capito, il controllo lo devi fare ogni anno, giusto?
    Se non è così allora come non detto.
    In caso contrario la soluzione proposta non mi pare corretta, perché tutti i controlli eseguiti per gli anni successivi a quello di iscrizione restituiranno che l'anno è sempre diverso da Date. Esempio:

    CASO 1
    Anno data_iscrizione = 2015
    Date = 27/01/2015
    i due anni sono uguali, quindi
    Risultato = OK

    CASO 2
    Anno data_iscrizione = 2014
    Date = 27/01/2015
    i due anni NON sono uguali, quindi
    Risultato = rinnovare tessera

    Come vedi, nel secondo caso il confronto sarà sempre False.

    Probabilmente dovresti tenere conto di una DataRinnovo della tessera, più che di quella di iscrizione, quindi creare un'apposito campo DataRinnovo (DateTime) e, personalmente, indicherei anche AnnoEsercizio (numerico) in cui registri l'anno per cui è valido il rinnovo.

    Può accadere che uno paga prima del 31/12/ quindi potresti avere che i due anni di DataRinnovo e AnnoEsercizio non siano uguali. Esempio:
    - ROSSSI paga il 12/12/2014 per il 2015
    - BIANCHI paga il 02/01/2015 per il 2015
    io direi che conviene registrare entrambe le informazioni, così posso fare una query che mi restituisca i dati in base ad AnnoEsercizio, che è quello che effettivamente ha un senso.

    Tu attualmente cosa registri?
  • Re: Data scadenza al 31/12 con access 2007

    Ciao Gibra, grazie per l'intervento. Allora:
    CASO 1
    Anno data_iscrizione = 2015
    Date = 27/01/2015
    i due anni sono uguali, quindi
    Risultato = OK

    CASO 2
    Anno data_iscrizione = 2014
    Date = 27/01/2015
    i due anni NON sono uguali, quindi
    Risultato = rinnovare tessera

    Come vedi, nel secondo caso il confronto sarà sempre False.
    E' proprio quello che volevo, ovvero il confronto fra l'anno attuale e l'anno della data di iscrizione che, se è lo stesso anno deve dare "OK" e se è diverso deve dare "rinnovare tessera".
    Io ho un campo "data iscrizione" in cui inserisco la data in cui il socio si è iscritto.
    - ROSSSI paga il 12/12/2014 per il 2015
    In questo caso la tessera di ROSSI sarà valida dal 01/01/2015 e scadrà il 31/12/2015. quindi per il 2015 il campo "controllo iscrizione" sarà "OK" per tutto il 2015 e sarà "rinnovare tessera" dal 01/01/2016.
    Tu attualmente cosa registri?
    La data di iscrizione.

    Messa come ha detto Osvaldo mi sembra che funzioni come volevo io...

    Ciao.

    Marco
  • Re: Data scadenza al 31/12 con access 2007

    Marvel01 ha scritto:


    gibra ha scritto:


    CASO 2
    Anno data_iscrizione = 2014
    Date = 27/01/2015
    i due anni NON sono uguali, quindi
    Risultato = rinnovare tessera

    Come vedi, nel secondo caso il confronto sarà sempre False.
    E' proprio quello che volevo, ovvero il confronto fra l'anno attuale e l'anno della data di iscrizione che, se è lo stesso anno deve dare "OK" e se è diverso deve dare "rinnovare tessera".
    Io ho un campo "data iscrizione" in cui inserisco la data in cui il socio si è iscritto.
    Non ci capiamo.

    Se tu confronti sempre l'anno corrente con l'anno di iscrizione, allora ogni volta che fai un confronto con qualsiasi anno successivo a quello di iscrizione restituirà sempre "rinnovare tessera", anche se ha già pagato!

    Almeno, io ho capito questo.

  • Re: Data scadenza al 31/12 con access 2007

    Se tu confronti sempre l'anno corrente con l'anno di iscrizione, allora ogni volta che fai un confronto con qualsiasi anno successivo a quello di iscrizione restituirà sempre "rinnovare tessera", anche se ha già pagato!
    Si Gibra, è quello che volevo. Questo perchè il ho una maschera "inizio" con dei pulsanti. Uno di questi mi porta alla maschera "controllo posizione soci" dove volevo proprio che mi venisse indicato chi è "ok" e chi deve rinnovare per l'anno in corso, solo che non avendo le giuste conoscenze di access (praticamente a 0...) lo avevo impostato male, scopiazzando qua e là da internet ma non mi dava il risultato che volevo.
    Quindi se il tizio paga ora sarà "ok" per tutto il 2015 ma se aveva pagato p.e. a dicembre 2014 per l'anno 2015 la sua iscrizione partiva dal 01/01/2015.
    Ovviamente, a gennaio di ogni anno si aprono le nuove iscrizioni e il db viene aggiornato con la nuove date di iscrizione, che scadrà al 31/12 dell'anno in corso.

    Un pò macchinoso ma spero si capisca quello che intendevo...

    Grazie per la pazienza e la disponibilità!

    Ciao.

    Marco
Devi accedere o registrarti per scrivere nel forum
18 risposte