Ciao!

Sono un neofita nella programmazione con Access. Per il mio lavoro ho la necessità di creare un programmino che mi semplifichi il lavoro quotidiano e farmi risparmiare oltre due ore di tempo tutti i giorni! Sarà creare il programmino che sarà complesso e complicato, credo, per cui chiedo il vostro aiuto, qualunque esso sia, in questa avventura da cui vorrei poter uscire vittorioso anche grazie a voi. Si tratterà di un programmino che aiuterà molti lavoratori ad offrire un servizio migliore alla popolazione.

Ho già ideato tutto quello che tale programma dovrà fare e vorrei delle dritte su come muovermi, su cosa studiare, passo-passo, per poter realizzare il prodotto finale e, perchè no, anche delle procedure per singoli tratti di programmazione che potrò riunire insieme. A giudicare dalla mole di operazioni che dovrà compiere il programmino, da incompetente quale sono, mi sembra quasi impossibile se non fosse per la certezza che Access sia un programma di grandissime potenzialità.

Il mio problema è che non saprei proprio cosa cercare in rete e come procedere passo-passo per affrontare una questione alla volta delle molte funzioni da programmare. Mi sarebbe utile, per esempio, un elenco di operazioni di programmazione da svolgere per cui cercare le singole procedure.

Nello specifico le funzioni che il programmino dovrà svolgere sono le seguenti.

1. Dovrà calcolare un promemoria di appuntamenti fino a 10 date/appuntamento/fascia oraria e di rispettare in tale programmazione delle condizioni variabili:

- gli appuntamenti dovranno essere solo in giorni feriali, da lunedì a venerdì;
- dovranno occupare fino a un massimo di 6.24 per il tipo R, fino a 16.24 per il tipo P e 2.24 per il RP;
- rispettare che nei mercoledì gli appuntamenti dovranno riguardare gli utenti della zona 1.4, nei venerdì quelli della zona 2.4, nei giovedì 3.4, il martedì quelli della zona 4.4, e che nei lunedì ogni 15 gg. si alternino gli appuntamenti nelle zone 1.4 e 2.4;
- i contratti potranno essere per singolo appuntamento o ripetersi per cicli fino a 8, ogni 3, 7, 10, 15, 21, 30 giorni;
- gli appuntamenti del tipo R dovranno avvenire in fascia oraria 1, i tipo P in fascia 2, gli RP in fascia 1 o 2 a seconda che siano r.RP o p.RP;
- la prenotazione dovrà attribuire il primo appuntamento agli utenti rispettando 3 tipi di priorità: entro 10 giorni, entro 60 giorni o entro 180 giorni.

2. Sarà in grado di trovare un elenco di utenti, nella tabella Utenti e/o in quella dei Contratti, a cui inviare fattura via fax o e-mail, con relativo cognome e nome dell'utente, cognome e nome del destinatario, numero di fax o indirizzo e-mail.

3. Mi consentirà di stampare un promemoria per l'utente in cui siano riportate delle informazioni standard per tutti e delle informazioni personalizzate, quali:

- cognome e nome dell'utente;
- data di inizio del contratto attuale;
- il promemoria per l'utente sulla data entro la quale far pervenire ulteriore prenotazione per nuovo ciclo di appuntamenti;
- la data entro cui firmare il relativo nuovo contratto;
- le indicazioni da rispettare per l'utente relativi alla tipologia di servizio richiesta;
- la specificazione dell'opzione richiesta per l'invio della fattura al fax o all'e-mail.

4. Dovrà anche consentire di creare e stampare due piani di lavoro, che nomineremo con PA e PB, per gli appuntamenti in ogni data.

5. Tali piani di lavoro raggrupperanno in parti uguali gli utenti (da 0 a 6) programmati per utenti di tipo R, quelli (da 0 a 16) di tipo P e quelli (da 0-2 ) di tipo RP.

6. Uno dei due piani di lavoro dovrà contenere solo utenti che abitano al Piano Terra o che siano forniti di ascensore.

7. Entrambi i piani di lavoro potranno ospitare prioritariamente gli utenti di categoria Z suddividendoli in Z1 e Z2.

8. Nel caso il numero di appuntamenti sia inferiore a 12 per giorno, basterà produrre un solo piano di lavoro;

9. Mentre se gli appuntamenti sono da 12 a 18, i primi 12 dovranno occupare un solo piano di lavoro e i restanti 6 il secondo.

10. Dovrà creare una tabella di rilevazione quotidiana in un calendario mensile del numero di appuntamenti e delle loro tipologie (R e P, P settimanali, P quindicinali, R ripetibili), del numero di prenotazioni ricevute e del numero di nuovi contratti sottoscritti.

Ma eccomi alla parte migliore.

Ho già creato due tabelle (utenti e Contratti) e le relative maschere.

Nella tabella Utenti ho il database principale, con dati anagrafici, indirizzo (da raggruppare per zona da 1 a 4), numero utente, indirizzo e-mail, numero fax, piano e ascensore.

Nella tabella Contratti ho riportato i dati anagrafici e il numero utente, i campi numero fax e indirizzo e-mail, il numero e la data della prenotazione, l'indicazione che si tratti di 1 solo appuntamento o di un ciclo, il numero di appuntamenti fino a 8 per ciclo, i campi per le 10 date da programmare (8 + 2 di riserva da confermare) a distanza di 3, 7, 10, 15, 21, 30 giorni l'una dall'altra, un campo per scrivere l'elenco dei codici relativi al tipo di servizio richiesto, uno per le indicazioni per l'utente relative al tipo di servizio richiesto.

Non so come fare:

- aggiornare in automatico i campi con informazioni uguali nelle due tabelle imputando un una sola di esse attraverso la relativa maschera;
- compilare automaticamente il campo Indicazioni per l'utente all'inserimento nel campo Servizi richiesti di un elenco di codici corrispondenti ai vari servizi richiesti tra quelli disponibili e di cui ho creato tabella separata dei codici servizi e relative indicazioni;
- la terzultima data di appuntamento dovrà essere collegata ad un avviso di scadenza per cui sarà necessario che l'utente prenoti nuovo ciclo di appuntamenti;
- l'insieme di tali avvisi dovranno compilare una nuova tabella Avvisi di scadenza per gli utenti relativa ad ogni data ed essa potrà essere stampata.

Sono consapevole che il lavoro da svolgere è molto impegnativo (e per questo vorrei poterlo svolgere in prima persona) però credo che, con il vostro aiuto esperto, potrò riuscire ad espletare tutti i compiti tranquillamente.

Chi può aiutarmi, anche se solo in parte?