Newsgroup: it.comp.appl.access
Titolo: Orari di lezione (riformulo la domanda)

 
Ho una sottomaschera in cui inserisco gli orari di inizio e fine lezione
tramite dei campi numerici
esempio:
record 1 dalle 8.00 alle 10.00
record 2 dalle 12.00 alle 15.00
record 3 dalle 16.00 alle 17.00
la giornata è sempre di 9 ore piene non mi servono i minuti.
Sulla maschera ho 9 controlli non associati che corrispondono alle 9 ore
della giornata
e che tramite una serie di query di aggiornamento vengono settati a 1 o a 0
a seconda
delle ore prenotate
In questo caso sarebbe:
controllo 8=1
controllo 9=1
controllo 10=0
controllo 11=0
controllo 12=1
controllo 13=1
controllo 14=1
controllo 15=0
controllo 16=1
(totale ore prenotate 6)
Il tutto funziona ma la procedura è molto pesante e quando i record saranno
molti
ho paura che rallenterà eccessivamente.
Spero di essere riuscito a farmi capire e qualcuno di voi mi dia una mano a
trovare
una routine piu snella
Grazie per l'aiuto
Walter

walter ha scritto:

Visto che usi solo ore intere, invece che salvare in tabella
"dalle...alle" puoi metterci i 9 campi boolean. Nella maschera le 9
caselle saranno associate ai campi, e per prenotare un periodo basterà
spuntare una o più caselle.
Niente più formule e query di aggiornamento. Estrema facilità nel contare
il numero di ore libere/impegnate per ciascuna giornata e nell'individuare
eventuali sovrapposizioni.
Es:
  record 1:  X X X 0 0 0 0 0 0
  record 2:  0 0 0 0 X X 0 0 0
  record 3:  0 0 0 0 0 0 0 X X
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:df1457$i7v$1...@news.newsland.it...

Grazie per il suggerimento, che ho messo subito in pratica
e in effetti funziona tutto alla perfezione ma dato che al mattino dovrei
consegnare
ai maestri ( è un scuola di sci) la stampa di un report con il programma
giornaliero preferirei che gli orari fossero nel formato
Dalle ore alle ore  allievo località  ecc ecc
 non mi azzardo a chiederti se in fase di stampa
è possibile riconvertire le caselle di controllo in ora inizio e ora fine
per ogni record
anche in formato numerico.


 Walter
Puoi anche riconvertire le caselle in ore, basta scrivere in un modulo
un'apposita public function a cui passi i nove valori, e richiamarla dove
serve.
O, se preferisci, due public function che diano l'ora di inizio e quella
di fine.
Se in fase di inserimento verifichi che le ore spuntate siano tutte
contigue, senza buchi, poi sarà estremamente facile ricavare le ore di
inizio e fine, basta verificare qual'è la prima e qual'è l'ultima casella
con valore True.
Es:
public function dal(O1 as boolean, O2 as boolean, O3 as boolean, ...) as 
  if O1 then 
    dal = #08:00:00#
  elseif O2 then 
    dal = #09:00:00#
  elseif O3 then 
    dal = #10:00:00#
  ....
  end if
end function
Però devi assolutamente evitare i "buchi":
  record 1:  0 X X 0 0 X X 0 0
altrimenti risulterà prenotato l'intero periodo dalle 9 alle 14 senza
tenere conto della pausa.
Fai i controlli sull'evento before update della maschera di inserimento, e
blocca l'inserimento del record settando Cancel=True finchè non viene
inserita una prenotazione corretta, senza buchi.
