Newsgroup: it.comp.appl.access
Titolo: realizzazione di una rubrica settimanale

Ciao a tutti. Ho un problema in Access che proprio non riesco a risolvere.
Vorrei realizzare una rubrica settimanale dove inserire degli appuntamenti.
Appena si apre il programma dovrebbero essere visualizzate sei maschere
(lunedi, martedi etc) della settimana corrente e con due tasti (Avanti e
indietro) saltare alle settimane successive o precedenti.
Io avevo pensato
di creare una tabella Giorno con il campo data, responsabile, zona e gli
altri campi che occorrono e collegarlo con una relazione uno-infinito ad
una tabella appuntamenti che avrà l'orario, il nome del cliente etc.. Il
problema è che assurdo realizzare 300 tabelle anche perchè non saprei
proprio come farle visualizzare settimana per settimana a partire da quella
corrente.
So che è un problema un pò particolare ma spero che qualcuno
possa aiutarmi. 
Vi ringrazio anticipatamente, soprattutto per quello che
ho già imparato da voi.
--------------------------------
Inviato via 
http://usenet.iol.it

 problema è che assurdo realizzare 300 tabelle
Permettimi una risposta cattiva: il solo fatto di ipotizzare una cosa del
genere denota che la cosa non e' alla portata delle tue attuali conoscenze
di basi di dati.:-)
Comunque, tanto per darti un'idea (servirebbe un trattato completo, in
effetti!:-) la tabella che devi creare e' una sola, come una sola e' la
maschera. Poi scorrerai i record come ti serve, saltando di settimana in
settimana o di mese in mese. Ma devi masticare anche un po' di VB per
riuscirci.
Saluti.
Luciano
(DOC)

 indietro) saltare alle settimane successive o precedenti.
[CUT]
E' inutile che ti dica che sono d'accordo con Luciano sul fatto che è
sufficiente una sola tabella e una sola maschera.
Forse ho trovato una soluzione che, creando sei query, riduce moltissimo la
complessità del codice VBA. In effetti farei così.
L'unica tabella, chiamata Appuntamenti, deve avere questa struttura:
DataEOra        Tipo Data/ora e chiave primaria
Descrizione      Testo
Il campo DAtaEOra conterrà sia la data che l'ora dell'appuntamento.
Crea sei query, una per ogni giorno della settimana (domenica esclusa), e
più precisamente:
La qryLunedì deve avere il seguente codice SQL:
SELECT Appuntamenti.DataEOra, Appuntamenti.Descrizione
FROM Appuntamenti
WHERE
(((Int([DataEOra]))=Int([Forms]![Maschera1]![Oggi])-Weekday([Forms]![Mascher
a1]![Oggi])+2))
ORDER BY Appuntamenti.DataEOra;
La qryMartedì deve avere il seguente codice SQL:
SELECT Appuntamenti.DataEOra, Appuntamenti.Descrizione
FROM Appuntamenti
WHERE
(((Int([DataEOra]))=Int([Forms]![Maschera1]![Oggi])-Weekday([Forms]![Mascher
a1]![Oggi])+3))
ORDER BY Appuntamenti.DataEOra;
e così via sino a creare la qrySabato che deve avere il seguente codice SQL:
SELECT Appuntamenti.DataEOra, Appuntamenti.Descrizione
FROM Appuntamenti
WHERE
(((Int([DataEOra]))=Int([Forms]![Maschera1]![Oggi])-Weekday([Forms]![Mascher
a1]![Oggi])+7))
ORDER BY Appuntamenti.DataEOra;
A questo punto crea sei maschere (una per ogni giorno della settimana) con
visualizzazione a Maschere continue chiamate SottomascheraLunedì,
SottomascheraMartedì ..... SottomascheraSabato.
Come origine record, SottomascheraLunedì avrà qryLunedì,
SottomascheraMartedì avrà qryMartedì e così via.
A fronte dell'evento "Dopo aggiornamento" di tutte e sei queste maschere
genera il seguente codice VBA:
DoCmd.GoToRecord , , acFirst
[Forms]![Maschera1]![SotMaskLunedì].Requery
[Forms]![Maschera1]![SotMaskMartedì].Requery
[Forms]![Maschera1]![SotMaskMercoledì].Requery
[Forms]![Maschera1]![SotMaskGiovedì].Requery
[Forms]![Maschera1]![SotMaskVenerdì].Requery
[Forms]![Maschera1]![SotMaskSabato].Requery
Crea una maschera chiamata Maschera1 con visualizzazione a Maschera singola
e non associata ad alcuna tabella.
In Maschera1 inserisci una casella di testo non associata e chiamata Oggi
che abbia come proprietà formato Data in cifre.
In Maschera1 inserisci anche sei controlli sottomaschera, chiamati
SotMaskLunedì, SotMaskMartedì e così via.
Come Oggetto origine di SotMaskLunedì indica SottomascheraLunedì, come
Oggetto origine di SotMaskMartedì indica SottomascheraMartedì e così via.
A fronte dell'evento "Su corrente" di Maschera1 genera il seguente codice
VBA:
Me!Oggi = Date
Me!Oggi.SetFocus
Me![SotMaskLunedì].Requery
Me![SotMaskMartedì].Requery
Me![SotMaskMercoledì].Requery
Me![SotMaskGiovedì].Requery
Me![SotMaskVenerdì].Requery
Me![SotMaskSabato].Requery
A fronte dell'evento "Dopo aggiornamento" del controllo Oggi genera il
seguente codice VBA:
Me!Oggi.SetFocus
Me![SotMaskLunedì].Requery
Me![SotMaskMartedì].Requery
Me![SotMaskMercoledì].Requery
Me![SotMaskGiovedì].Requery
Me![SotMaskVenerdì].Requery
Me![SotMaskSabato].Requery
In Maschera1 inserisci un pulsante di comando chiamato Più e a fronte del
suo evento "Su clic" genera il seguente codice VBA:
Me!Oggi = Me!Oggi + 7
Me!Oggi.SetFocus
Me![SotMaskLunedì].Requery
Me![SotMaskMartedì].Requery
Me![SotMaskMercoledì].Requery
Me![SotMaskGiovedì].Requery
Me![SotMaskVenerdì].Requery
Me![SotMaskSabato].Requery
Inserisci anche un pulsante di comando chiamato Meno e a fronte del suo
evento "Su clic" genera il seguente codice VBA:
Me!Oggi = Me!Oggi - 7
Me!Oggi.SetFocus
Me![SotMaskLunedì].Requery
Me![SotMaskMartedì].Requery
Me![SotMaskMercoledì].Requery
Me![SotMaskGiovedì].Requery
Me![SotMaskVenerdì].Requery
Me![SotMaskSabato].Requery
Quanto scritto sopra ti permette anche di aggiornare i tuoi appuntamenti
direttamente tramite Maschera1 e di ricercare gli appuntamenti di una data
digitandola nel controllo Oggi.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------