Alfio
Valuta se una query a campi incrociati può fare al tuo caso ...
>
>Alfio
Vincenzo Turturro
Certificato Eucip Core Level
ITA 0000-002299 del 14/05/2007
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
risorse Access:
http://www.accessgroup.it
---------------------------------------------
Il sito comune di it.comp.as400
http://www.faq400.com
---------------------------------------------
A mio avviso credo che in questa tabella manchi un dato fondamentale che è
la data del servizio, inoltre sostituirei il campo durataservizio con un
campo di tipo Data/ora in cui memorizzerai l'orario di inizio del servizio.
>Quello che vorrei ottenere è una videata con intestazione colonne
>formata dalle cabine e intestazione righe formata dall'orario e, qui
>in mezzo, tutti gli appuntamenti del giorno che si sviluppano in
>orizzontale (cabine) ed in verticale in base alla durata del
>trattamento.
Quella che tu chiami "videata" la puoi realizzare con una maschera non
associata che contenga affiancate tante caselle di riepilogo quante sono le
gabine; nella maschera inserirai anche un controllo non associato (casella
di testo, casella combinata, ActiviX calendario ecc.) nel quale digiti o
selezioni la data di cui vuoi visualizzare la situazione delle prenotazioni.
Creati poi una tabella TblOrari composta da un solo campo di tipo Data/ora:
tale tabella conterrà un record per ogni orario di inizio servizio possibile
in una giornata; insomma se i servizi possono essere prestati dalle 9:00
alle 19:00 conterrà i seguenti record:
09:00
09:15
09:30
09:45
10:00
10:15
....
....
18:30
18:45
19:00
Ogni casella di riepilogo della maschera avrà come origine riga una query in
cui metterai in join la tabella TblOrari e la tabella agenda in base ai
relativi campi orario di inizio servizio: naturalmente ogni query dovrà
essere filtrata con l'id della cabina cui si riferisce e con la data
digitata/selezionata nella maschera; così facendo ogni casella di riepilogo
conterrà tutti gli orari possibili di una giornata e a fianco agli orari per
cui esiste già la prenotazione puoi far comparire il nome del cliente.
Naturalmente da questa maschera, selezionando la riga di un orario non
prenotato di una cabina (ovvero di una delle caselle di riepilogo) farai
aprire una maschera con cui inserirai una nuova prenotazione nella tabella
agenda, dopo aver effettuato tutti i controlli che che la stessa cabina e la
stessa estetista non siano impegnati contemporaneamente su più di un
servizio; un esempio di come effettuare tali controlli di sovrapposizione lo
trovi sul Sito Comune (link qui sotto), nella Sezione General, in queste due
mie FAQ:
1) 6.218 In un database per gestire la prenotazione di camere di albergo
evitare la sovrapposizione di prenotazioni.
2) 6.209 In una agenda realizzata con Access verificare che un nuovo
appuntamento non si accavalli con impegni precedenti
>Spero di essere stato chiaro
Anche io spero di essere stato chiaro.
> ed intanto ringrazio
Prego.
>chiunque posssa darmi un aiutino....
Aiutino???
Che brutta parola!!!
>Ciao
>
>Alfio
--
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------
Ciao Roberto,
ho realizzato la maschera con le listbox non associate ecc, tutto
funge egregiamente ma, e ti pareva che non ci fosse un ma, la listbox
non visualizza tutti gli orari possibili, ma solo quelli prenotati. Le
listbox hanno come origine riga la seguente query, naturalmente ognuna
di esse si rifà alla propria cabina:
SELECT TabOrari.IdOrario, TabOrari.DescOrario, Appuntamenti.Cognome,
Appuntamenti.Nome, Appuntamenti.IdCabina, Appuntamenti.Data
FROM TabOrari LEFT JOIN Appuntamenti ON TabOrari.IdOrario =
Appuntamenti.IdOrario
WHERE (((Appuntamenti.IdCabina)=7) AND ((Appuntamenti.Data)=[Forms]!
[Agenda]![TxtData]))
ORDER BY TabOrari.IdOrario;
Dove sbaglio?
Ciao
Alfio