Newsgroup: it.comp.appl.access
Titolo: Come gestiore date ricorrenti su scadenziario ?

Sto preparando un calendario, all'interno di un'applicazione realizzata 
con Access
Vorrei consentire l'inserimento di appuntamenti ricorrenti del tipo 'il 
primo di ogni mese' ma, avendo finora registrato come singolo record su 
una tabella apposita ogni appuntamento, ho difficolta' nell'inserire 
questo tipo di informazione
Dovrei inserire una sola riga, con 'tipo_appuntamento' = ricorrente  e 
poi visualizzare 'al volo' sulla form dove appaiono gli appuntamenti 
della settimana/mese
Finora non ho trovato soluzioni migliori, voi come fareste?
Ciao e grazie
RobertoA


Beh non ho capito benissimo...
Credo, ma magari sbaglio, ci siano solo 2 modi per gestire questa cosa.
 
Cosa Comune ai 2:
Numero di Eventi(che può essere anche Data Fine)
Ciclicità(Settimanale/mensile/bimensile...)
 
1° In fase di INSERIMENTO GENERI gli eventi in tabella ciclando da Oggi per N°EVENTI o da Oggi fino a dataFine sempre usando la ciclicità per il DateAdd.
 
2° Se l'evento è RICORRENTE definisci nella Tabella un Parametro di Ricorrenza, e tutte le VOLTE ti fai la SIMULAZIONE delle ricorrenze per capire se sei prossimo ad una...
 
Personalmente io uso sempre la 1° è l'unico metodo da usare... come fa anche OUTLOOK peraltro.
 
Ciao
@Alex


Relativamente al punto 1, ma dataFine quale sarebbe per un evento 
ripetitivo? E' questo il problema
Se ho un un evento ripetitivo ogni lunedi alle 18.00, e dovessi inserire 
tanti record in tabella quanti sono gli eventi, quante righe inseriresti?
Ho verificato su Outlook e non sembra necessario definire una data di 
fine eventi per il tipo ripetitivo, tu gli dici l'inizio, il tipo di 
frequenza e poi ti mostra (credo calcolandolo al volo) la data/ora 
dell'evento futuro
 
 


Guarda meglio la mascherina di Outlook...alla voce "INTERVALLO DI RICORRENZA"... ti propone Numero di Ricorrenze, oppure la Data di Fine, come ti dicevo prima...(ovviamente anche NESSUN TERMINE, ma io lo eviterei chiaramente).
 
Quindi definisci un'interfaccia per la gestione degli Eventi RICORRENTI imponendo all'utente di definire uno dei 2 Metodi di Definizione LIMITE.
 
Sarà meglio che tu possa SALVARE questi dati in 2 campi dell'evento... sia mai che devi MODIFICARLI... non li trovi più tutti gli eventi da rivedere...!
 
@Alex
 


Sto vedendo Outlook 2003, ed alla voce RICORRENZA propone come 
intervallo un NESSUN TERMINE, FINE DOPO X OCCORRENZE, FINE ENTRO IL 'DATA'
Quello che mi interessava capire era se Outlook, per ricorrenze NESSUN 
TERMINE, le visualizzasse sul calendario calcolandole ogni volta 'al 
volo' oppure c'era un qualche altro sistema per visualizzarle

Non so come faccia Otlook... in concreto, ma analizzando il modo di elaborazione credo possa sposarsi con quanto faccio io, almeno in logica.
 
La ricorrenza è un Oggetto a parte dalla scadenza...!
Quindi ho una Tabella RICORRENZE, nella quale metto questi campi:
IdRicorrenza
DataInizio
DataFine
Criterio   ' Giornaliera/Settimanale/Mensile/Annuale
Frequenza  ' Ogni X volte il Criterio (Ogni 2gg, 2settimane...)
Cadenza    ' nel caso Settimanale Ogni (Lunedì/Martedì....)
NumeroOccorrenze (Alternativo alla DataFine ma calcolo entrambi e li scrivo per comodità)
 
Poi ho la Tabella Scadenze...:
IdScadenza
DataInizio (gg/mm/yyyy hh:mm)
DataFine   (gg/mm/yyyy hh:mm)
Ricorrenza (Si/No)
 
Ora sapendo che per ogni Record in Tabella Ricorrenze, posso avere MOLTE ricorrenze, masterebbe fare una Relazione 1-M, ma questo genererebbe un problema RELAZIONALE, nel senso che prima dovresti creare la RICORRENZA poi associare gli appuntamenti.
Quindi ho usato una Tabella intermedia come a realizzare un M-M, quindi posso far diventare RICORRENZA anche una Scadenza non ricorrente, in quanto nel momento in cui attivo la ricorrenza, viene creata la ricorrenza ed le singole scadenze, nella M-M registrati gli IDRicorrenza-IDScadenza, chiaramente la PK puoi definirla come AND delle 2.
 
Si potrebbe evitare di creare realmente le singole Scadenze... ma io, per comodità ho preferito così...!
 
Spero sia chiaro...
 
@Alex


Chiaro e' certamente chiaro
Pure sul fatto di creare una riga in tabella Scadenze di una ricorrenza 
e' chiaro
Non ho ancora ben capito, su una riga Scadenze di una ricorrenza, cosa 
ci metti su DataFine, oppure sulla tabella Ricorrenze cosa ci metti su 
DataFine
 
 

Siccome i campi ORA non esistono e siccome nelle operazioni di SOMMA/DIFF sulle date io uso, quando possibile le Funzioni preposte, in questo caso specifico riferendomi ad APPUNTAMENTI, per me l'Ora di un appuntamento è definita da 
ORAINIZIO
ORAFINE
dove in realtà il campo ORAINIZIO ha tutto il dato... GG/MM/AAAA HH:MM
Così come Ora fine, e questo in una definzione di appuntamenti mi consente di capire quanti SLOT occupa quell'impegno... e verificare di conseguenza la sovrapposizione con altri appuntamenti oppure durante la pianificazione di RICORRENZE...
Esempio se avevi prenotato un appuntamento tra 1 mese(che occupava 3SLOT di tempo), ed oggi iserisci un RICORRENTE che si accavalla per 1 SLOT hai modo di trovarli...
 
Nel DataFine delle Ricorrenze invece salvo la data dell'ultimo Appuntamento...
Definita una ricorrenza settimanale di 10 ricorrenze, definito il 1° Giorno di appuntamento salvo il calcolo della data dell'ultima ricorrenza...
Alcuni dati sono facilmente calcolabili al volo... ma la comodità di averli già in alcuni frangenti è rilevante.
 
@Alex